티스토리 뷰

대부분 OpenCV를 사용하면 Python을 사용하는 것 같다.

 

학교 과목 과제 때문에 OpenCV를 사용하게 되었는데 홈페이지 튜토리얼이 조금 불친절해서 여기 정리해두기로 했다.

 

1. OpenCV 다운로드 받기

https://opencv.org/releases/ 에 접속해 최신 버젼의 OpenCV 라이브러리를 다운로드 하자. Visual Studio에서 작업한다면 Windows환경일테니 다운로드 후 원하는 위치에 라이브러리를 설치해준다. 이 경로를 기억하고 있자.

 

2. 환경 변수 설정하기

OpenCV를 설치하게 되면 디렉토리 이름이 길어지는 경우가 있다. Windows 10 기준으로 환경 변수를 설정해주자. 2019년 10월 30일 기준으로 OpenCV를 설치하게 되면 vc14와 vc15가 설치되는데, vc15만 사용하도록 하겠다.

 

OpenCV를 설치한 디렉토리는 다음과 같다.

D:\@university\4-2\ImageProcess\opencv

여기서 vc15폴더의 경로를 환경 변수로 설정해주어야 한다. 시작 메뉴 -> 검색창에 "환경 변수 설정"을 검색해보자.

검색 결과에 나오는 시스템 환경 변수 설정을 클릭하면 시스템 속성 창이 나오는데 맨 아래 보이는 환경 변수 창을 클릭하자

그럼 위와 같은 창을 볼 수 있다. 새로 만들기를 눌러서 다음과 같이 입력해주도록 하자

참고로, 이미 추가해 두었기 때문에 윈도우명이 사용자 변수 편집인 점은 양해를 바란다.

아까 입력한 경로에서 opencv\build\x64\vc15의 디렉토리를 찾아 경로 명을 복사하고, 변수 이름에 OPENCV_DIR으로 설정하자. 나의 경우는 아래와 같이 설정된다.

D:\@university\4-2\ImageProcess\opencv\opencv\build\x64\vc15

확인을 누르면 OPENCV_DIR이라는 환경 변수가 설정된다.

 

3. Visual Studio 프로젝트 생성하기

Visual Studio를 실행해 프로젝트를 "빈 프로젝트" 옵션을 주고 생성하자. 생성하게되면 아무것도 없는 프로젝트가 프로젝트 탐색기에 보인다. 프로젝트 탐색기에서, 프로젝트 속성으로 들어가 각종 옵션들을 세팅해주자.

 

Visual Studio의 빌드 옵션을 조금 손봐주자.

현재 버젼의 OpenCV는 x64를 기준으로 빌드되어있다. 빌드 옵션을 바꿔주자.

 

그 다음, 프로젝트 탐색기에서, 프로젝트 속성으로 들어가 각종 옵션들을 세팅해주자. 구성 속성(Common Properties) -> C/C++ -> 일반(General)으로 들어가 추가 포함 디렉토리(Additional Include Directory)에 다음과 같은 값을 추가해주자.

$(OPENCV_DIR)\..\..\include

그 다음, 구성 속성(Common Properties) -> 링커(Linker) -> 일반(General)으로 들어가 추가 라이브러리 디렉토리에 다음과 같은 값을 추가해주자.

$(OPENCV_DIR)\lib

그 다음, 구성 속성(Common Properties) -> 링커(Linker) -> 입력으로 들어가 추가 라이브러리 디렉토리에 다음과 같은 값을 추가해주자.

opencv_world412d.lib

opencv_world412d.lib의 굵게 표시된 부분은 OpenCV의 해당 release 버젼이다. 만약 이 글이 오래되어 릴리즈 버젼이 변경된다면 그대로 사용하지 말고 윈도우 탐색기의 검색 기능을 이용해 저 파일처럼 생긴걸 찾아준 다음, 파일명을 변경해주도록 하자.

 

4. 컴파일 해보기

소스코드 파일 (예를 들어, main.cpp)를 생성하고 다음과 같은 OpenCV 예제 코드를 빌드해보도록 하자.

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
	if (argc != 2)
	{
		cout << " Usage: " << argv[0] << " ImageToLoadAndDisplay" << endl;
		return -1;
	}
	Mat image;
	image = imread(argv[1], IMREAD_COLOR); // Read the file
	if (image.empty()) // Check for invalid input
	{
		cout << "Could not open or find the image" << std::endl;
		return -1;
	}
	namedWindow("Display window", WINDOW_AUTOSIZE); // Create a window for display.
	imshow("Display window", image); // Show our image inside it.
	waitKey(0); // Wait for a keystroke in the window
	return 0;
}

정상적으로 빌드가 되는가? 될리가 없다. 왜냐하면 visual studio가 opencv_412d.dll의 경로를 알지 못하기 때문이다. 보통 프로그램을 배포할 때는 dll파일도 함께 배포하는 경우가 많다. dll파일은 다음과 같은 경로에 있다.

%OPENCV_DIR%\bin

opencv_world412d.dll파일을 복사해 프로젝트 폴더에 복사 붙여넣기 해주자. 나중에 빌드에 성공해서 exe 파일이 생기는 경우엔 마찬가지로 dll파일을 exe폴더와 같은 경로에 복사 붙여넣기 해주도록 하자.

 

cmd를 사용해 빌드해 준 파일을 사용해보면 다음과 같은 결과를 얻는다

이대로 명령을 실행하게 되면

 

명령 인수로 넘겨준 그림을 볼 수 있다.

 

 

참고 자료

https://docs.opencv.org/4.1.2/dd/d6e/tutorial_windows_visual_studio_opencv.html, https://docs.opencv.org/4.1.2/d3/d52/tutorial_windows_install.html

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함