본문 바로가기

프로그래밍 강좌/C++ - OpenCV

[OpenCV][C++] 최신 OpenCV 설치하기 ( CMake 사용하여 소스 빌드하기), visual studio 2019 contrib 2022 환경 설정

 

OpenCV를 설치하여 사용하는 방법은 두가지가 있는데, 아래와 같은 차이점이 있습니다.

 
 
설치 실행 파일
소스 직접 빌드
장점
설치가 쉬움
Dll, Lib 빌드 필요 없음
OpenCV 추가 모듈 사용 가능
자신의 시스템 환경에 맞는 Dll, Lib 빌드 가능
단점
OpenCV 추가 모듈 사용 불가
Windows 64 비트만 지원
빌드 작업 어렵고 오래 걸림

 

설치 실행 파일을 이용하는 방법은 지난번에 다뤘고요.

https://blog.naver.com/dorergiverny/223057719024

 

[OpenCV][C++] 최신 OpenCV 설치하기 (쉬운방법), visual studio 2019 2022 버전 설치 확인 cmake 환경설정 library

영상처리, 컴퓨터 비전을 공부하시는 분들은 OpenCV에 대해 들어보셨을 꺼에요. 이번에는 최신 버전 Op...

blog.naver.com

이번에는 CMake 를 이용하여 소스를 직접 빌드하는 방법을 알아보겠습니다.

OpenCV 최신 소스 다운 받기

현재 OpenCV 4.8.0이 Release가 되었으나 저는 4.7.0 버전으로 설치하도록 하겠습니다. OpenCV 4.8.0 버전은 아래 글을 참조하세요

https://blog.naver.com/dorergiverny/223142569909

 

[OpenCV][C++] 최신 버전 4.8.0 Release 업데이트 소식 - 윈도우 Windows 설치하기 Github Cmake 이용

오늘은 기쁜 마음에 신규 버전인 4.8.0 버전 Release 소식을 전해드리고자 합니다. 바로 어제 github에 M...

blog.naver.com

이번에는 OpenCV github 사이트에서 소스를 내려 받습니다.

https://github.com/opencv/opencv

 

GitHub - opencv/opencv: Open Source Computer Vision Library

Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.

github.com

git을 사용하시면 clone을 하시면 되고, 저는 windows에서 사용하는 방법 기준으로 설명 드릴께요.

github의 code 버튼을 클릭하시면 Download ZIP 을 할 수 있는 버튼이 나옵니다.

github에 있는 코드를 zip파일로 다운로드 하는 것 입니다.


여기서 잠깐!!

github는 최신 개발중인 버전도 볼 수 있기 때문에 잠시 둘러 보면,

아직 공식 Release가 되지는 않았지만 5.x가 개발되고 Test 되고 있는 중입니다.

우리가 사용하다가 개선점이 발견되면 contribution도 가능합니다.


그럼 내 PC에 다운로드 폴더에 아래와 같이 두 개의 파일이 받아집니다.

Windows 탐색기를 이용하여 C:\에 OpenCV 라는 폴더를 생성합니다.

다운로드 받은 두개의 파일을 C:\OpenCV에 압축 해제 합니다.

그리고 build라는 새로운 폴더를 하나 생성해 줍니다.

그럼 아래와 같이 폴더가 생성되었겠죠?

CMake 사용하여 솔루션 파일 만들기

CMake는 다양한 운영 체제 또는 프로그래밍 개발 환경에 적합한 make 파일 또는 프로젝트, 솔루션 파일을 생성하는 유틸리티 입니다.

우리는 visual studio 2019에 맞는 opencv.sln 파일과 다수의 *.vcxproj 파일을 만들 것 입니다.

일단 CMake를 다운 받고 설치합니다. CMake 공식 홈페이지에서 최신 버전을 다운 받습니다.

https://cmake.org/

홈페이지의 Download Latest Release를 클릭합니다.

최신 버전은 3.26.1 로써 최신 버전 다운 받으시면 됩니다.

windows x64 installer File명을 클릭하시면 다운이 받아집니다.

다운 받으신 파일을 더블클릭하셔서 실행하시고 Next를 눌러 설치를 하시면 됩니다.

이제 CMake가 설치가 되었어요.

windows 옆에 돋보기를 클릭하신 후 'cmake'를 치시면 cmake 실행할 수 있는 앱이 검색이 됩니다. (설치 되었을 경우)

이걸 클릭하시면 아래와 같은 창이 뜨고,

'Where is the source code'  Browse Source.. 를 이용하여 선택하시고,

'Where to build the binaries'  Browse Source..를 이용하여 build 폴더를 선택하시면 됩니다.

여기에서 opencv-4.x.zip을 푸실 때 opencv-4.x 폴더 아래에 opencv-4.x 폴더가 하나 더 있는 경우가 있어요.

폴더 모습을 주의하세요.

C:\OpenCV/opencv-4.x/ 소스들이 있습니다.

여기까지 되셨다면,

Configure 버튼을 클릭합니다.

그럼 아래와 같은 창이 뜰테고,

저는 Visual Studio 2019버전을 사용하니까 아래와 같이 선택했어요.

플랫폼은 64비트이므로 x64로 선택한 후 Finish를 누릅니다.

Finish 버튼을 누르면 CMake는 소스 폴더 내에서 CMakeLists.txt 이름의 파일을 열심히 분석하게 되고 이 정보들로 솔루션 파일 프로젝트 파일을 생성하는 거에요.

분석이 끝나면 아래와 같은 화면이 뜹니다.

빨간 색으로 채워져 있는 부분이 OpenCV 소스 코드를 빌드할 때 설정할 수 있는 항목들입니다.

이 중에서 추가/제거를 할 수 있습니다.

중요한 4가지만 짚고 넘어갈께요. 

BUILD_SHARED_LIBS
on
static으로 빌드하고 싶으시면 체크 해제
가끔씩 배포 시 static으로 배포하고 싶을 때 있음
BUILD_opencv_world
on
여러 dll들을 opencv_world.dll 로 하나로 묶어줌
OPENCV_ENABLE_NONFREE
on
SURF 등(SIFT는 특허 만료로 무료됨) 유료 기능 설치
OPENCV_EXTRA_MODULES_PATH
위치
c:\OpenCV\opencv_contrib-4.x/modules 선택

 

 

기타 CUDA, Python 등 다른 설정들은 추후 기회되면 설명드릴께요.

선택을 다하셨으면 configure 버튼을 누릅니다.

설정이 끝나고 configure가 끝나면 configure 버튼을 한번 더 눌러 줍니다.

처음 configure 할 때는 오래 걸렸지만 추가 설정 이후 configure 하면

금방 끝나네요.

뭔가 이상하지만 다시 한번 configure 버튼을 눌러주면 빨간 화면이

아래와 같이 하얗게 변합니다. 이 것은 모든 설정을 확인했다는 의미에요.

그럼 이제 Generate 버튼을 눌러줍니다.

Generate 버튼을 누르면 아래와 같이 Generating done 이란 메시지가 뜹니다.

자, 솔루션 파일이 만들어 졌을까요?

C:\OpenCV\build 폴더에 가 보시면 opencv.sln 파일이 멋지게 떠 있습니다.

 
Visual Studio 2019 에서 OpenCV 빌드하기

CMake 창에서 Open Project 버튼을 누르면

Visual Studio 2019 프로그램이 실행되면서 자동으로 OpenCV.sln 파일을 불러옵니다.

(상기 솔루션을 직접 클릭하셔서 visual studio를 실행시키실 수 있습니다.)

124개의 프로젝트가 생성이 되었네요.

지금은 Debug 모드를 빌드해보겠습니다. Debug 모드와 x64를 확인하시고

빌드 >> 솔루션 빌드(B) 를 클릭합니다.

그러면 열심히 빌드를 합니다.

빌드 시간이 오래 걸리니 차 한잔의 여유를 느끼세요~!

 

만약 실패가 있고 opencv_worldxxxd.dll 파일이 생성되지 않았다면

CMake 를 이용한 솔루션 파일 만들기 부터 다시 진행하셔야 합니다.

 

저는 실패가 1개 떴습니다.

오류 목록을 보니 링크 에러네요.

일단 python을 사용하지 않을 것이니 pass해도 무관합니다.

 

전체 빌드가 완료되면 아래와 같이 파일이 생성됩니다.

Release 모드도 동일한 방법으로 build 하시면 d 가 빠진 lib과 dll이 생성됩니다.

 

파일명
위치
opencv_worldxxxd.lib
C:\OpenCV\build\lib\Debug
opencv_worldxxxd.dll
C:\OpenCV\build\bin\Debug
opencv_worldxxx.lib
C:\OpenCV\build\lib\Release
opencv_worldxxx.dll
C:\OpenCV\build\bin\Release

 

*.lib 파일은 프로그램 개발 시 사용되고,

*.dll 파일은 응용 프로그램 실행 시 사용됩니다.

 

*.lib 파일과 *.dll 파일, include 파일들이 흩어져 있어요.

OpenCV를 편리하게 사용하려면 헤더파일, 라이브러리 파일을 한 곳에 모아서 관리하는 것이 좋습니다. 이 작업을 install 작업이라고 하고 visual studio 2019에서 쉽게 수행할 수 있습니다.

솔루션 탐색기에서 INSTALL 프로젝트를 빌드를 해 줍니다.

빌드가 완료되면, install 폴더에 아래와 같이 include 파일과 x64 파일 내에

dll, lib 파일들이 모여지게 됩니다.

이 폴더 구조가 마치 설치 실행 파일을 다운 받았을 때의 폴더 구조와 같죠?

OpenCV 환경 설정

시스템 환경 변수 설정하는 방법에 대해 간단히 설명드릴께요.

윈도우 버튼 옆의 돋보기를 누른 후 '제어판'을 입력하시면, 제어판이 떠요.

시스템을 클릭하시면 시스템 설정 창이 뜨는데, 오른쪽에 보시면

고급 시스템 설정이 있습니다. 이것을 클릭하세요.

그럼 시스템 속성 창이 뜨고,

고급 >> 환경 변수(N)을 클릭합니다.

시스템 변수 Path 변수를 찾아 편집(I)을 누르시고 아래와 같이

 

C:\OpenCV\build\install\x64\vc16\bin 을 적으시면 됩니다.

또는 찾아보기(B) 버튼으로 폴더를 지정하여 입력하실 수 있습니다.

*.dll 파일들이 있는 폴더를 지정해주는 것이고, vc15로 컴파일 하셨을 경우 path가 달라지겠죠?

OpenCV 환경 변수 설정 검증

환경 변수가 제대로 설정되었는지 확인하려면

'windows 로고 키' +'R' 을 누르면 아래와 같이 실행 창이 뜨고

'cmd'를 입력합니다.

그리고 opencv_version.exe 를 입력하시고 enter를 치시면

아래와 같이 버전이 출력되면 설정이 완료된 것 입니다.