* 설치환경
OpenCV-4.5.2
Windows 10
Visual Studio 2019
OpenCV 설치 실행 파일을 이용한 설치
1. OpenCV 실행 파일 다운로드

OpenCV 사이트에서 Windows용 실행 파일을 다운로드한다. 그러면 opencv-4.5.2-vc14_vc15.exe 파일이 다운로드 된다.
2. OpenCV 실행 파일 압축 풀기

exe 파일을 실행하면 위와 같이 경로를 선택하는 창이 뜬다. 나는 C 드라이브를 선택하고 압축을 풀었다. 그러면 C드라이브에 opencv라는 폴더가 생성되고, 그 아래에 OpenCV 관련 파일이 생성된다.
3. OpenCV 환경 변수 추가
OpenCV 응용 프로그램을 실행하려면 OpenCV DLL 파일이 필요하다. 따라서 OpenCV DLL 파일이 있는 경로를 시스템 환경 변수에 추가해준다.

사용자 변수에 OPENCV_DIR 이름의 환경 변수를 추가해준다.

그리고 Path 환경 변수에 %OPENCV_DIR%\x64\vc15\bin를 추가해준다.
4. OpenCV 설치 확인

환경 변수 설정을 제대로 했는지 확인하기 위해, cmd 창에서 opencv_version.exe를 쳐본다. 버전 정보가 나오면 완료한 것이다. 나는 환경 변수 설정을 완료한 뒤 윈도우 재시작을 했더니 됐다.
Visual Studio 2019에서의 OpenCV 사용
1. 프로젝트 생성

새 프로젝트 생성에서 Windows Desktop Wizard를 선택한다.

프로젝트명을 입력하여 새 프로젝트를 생성한다.

그리고 콘솔 응용 프로그램, 빈 프로젝트를 선택하고 OK를 누르면 새 프로젝트가 생성된다.
2. 솔루션 64비트 설정

OpenCV 라이브러리는 64비트로 빌드되었기 떄문에 Visual Studio에서도 64비트로 변경해 주어야 한다. 위와 같이 x64를 선택하여 64비트로 변경한다.
3. 소스 코드 작성
main.cpp 파일을 추가하고 아래와 같이 작성한다.
#include "opencv2/opencv.hpp"
#include <iostream>
int main()
{
std::cout << "Hello OpenCV " << CV_VERSION << std::endl;
return 0;
}
Visual Studio에 소스 코드를 입력하면 잘못되었다고 표시가 된다. Visual Studio에서 OpenCV 라이브러리를 사용하려고 하는데 파일의 경로를 알 수 없기 때문이다. 따라서 파일이 위치한 폴더를 인식할 수 있도록 프로젝트 설정을 해줘야 한다.
4. OpenCV 라이브러리 폴더 경로 설정
프로젝트 설정 메뉴에서 아래 설정을 해주면 된다.
OpenCV 헤더 파일 경로 (추가 포함 디렉터리)

[C/C++] - [General] 탭의 Additional Include Directories 항목에 $(OPENCV_DIR)\include를 추가해준다.
OpenCV 라이브러리 파일 경로 (추가 라이브러리 디렉터리)

[Linker] - [General] 탭의 Additional Library Directories 항목에 $(OPENCV_DIR)\x64\vc15\lib를 추가해준다.
프로젝트에서 사용할 OpenCV 라이브러리 이름 (추가 종속성)


[Linker] - [Input] 탭의 Additional Dependencies 항목에 추가해준다. 이때, Debug 모드에서는 opencv_world452d.lib를 입력해주고, Release 모드에서는 opencv_world452.lib를 입력해준다. 즉, ~d.lib로 끝나는 파일은 Debug 모드에서 사용하는 파일이다.
5. 실행 결과

설정 후 소스 코드를 실행해보면 위와 같은 결과가 나오는 것을 확인할 수 있다.
BMP 파일 출력 예제
앞에 사용한 HelloCV 프로젝트에 소스 코드를 추가하여 BMP 파일을 출력하는 예제를 작성해본다.
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
cout << "Hello OpenCV " << CV_VERSION << endl;
Mat img;
img = imread("lenna.bmp"); // bmp 파일을 불러와 img 변수에 저장
if (img.empty()) // 예외 처리 - bmp 파일을 불러오지 못했을 경우 empty()는 true 반환
{
cerr << "Image load failed!" << endl;
return -1;
}
namedWindow("image"); // 영상을 화면에 나타내기 위한 image라는 새로운 창 생성
imshow("image", img); // image라는 창에 img 객체 출력
waitKey(); // 사용자의 키보드 입력을 기다리는 함수 - 사용자가 키보드를 누르면 다음 행으로 넘어감
return 0;
}
OpenCV에서 영상 데이터는 Mat 클래스를 이용하여 표현한다. Mat 클래스는 다양한 자료형의 행렬을 표현할 수 있는 범용 행렬 클래스이다.