지난 번 "Visual Studio 2017에서 OpenCV 3.2 빌드하기"에 이어 이번에는 OpenCV Extra module을 함께 빌드하는 방법을 정리해보겠습니다. 더불어 Python을 이용하여 OpenCV를 사용하기 위해 python 개발 환경을 만드는 것도 함께 알아봅니다.


추후 OpenCV를 Python 언어로 사용하려면 OpenCV를 빌드하기 전에 미리 Python을 컴퓨터에 설치해두어야 합니다. 개인적으로는 Python을 직접 설치하는 방법 대신, Anaconda를 설치하여 Python과 유용한 라이브러리를 한꺼번에 설치했습니다. 제가 설치한 Anaconda 버전은 4.4.0이고, 이 패키지에 들어있는 Python 버전은 3.6.1 입니다. Anaconda는 아래 링크에서 다운로드 할 수 있습니다.

https://www.continuum.io/downloads


참고로, Anaconda 4.4.0 버전을 설치할 때에는 Anaconda 관련 패스를 환경 변수에 추가하지 않는 것을 권장하는데요, 저는 그냥 환경 변수를 추가하여 설치를 했습니다.


이제 본격적으로 OpenCV를 빌드하는 방법을 알아보겠습니다. 먼저 OpenCV Extra modules 소스 코드를 다운로드 합니다. OpenCV Extra modules의 최신 소스 코드는 https://github.com/opencv/opencv_contrib 사이트에서 다운받을 수 있습니다. 다만 지금 빌드할 버전은 2016년 12월에 릴리즈된 OpenCV 3.2 버전이기때문에 아래 링크에서 소스 코드를 다운로드합니다.

https://github.com/opencv/opencv_contrib/releases/tag/3.2.0


위 사이트에서 Source code (zip) 으로 링크된 zip 파일을 다운로드하면 opencv_contrib-3.2.0.zip 이름으로 소스 코드가 다운로드 됩니다. 이 파일을 이전에 OpenCV 소스 코드 압축을 풀었던 C:\OpenCV 폴더에서 압축을 풉니다. 그러면 C:\OpenCV\opencv_contrib-3.2.0 폴더가 생기면서 그 아래에 여러 개의 폴더와 파일이 생성됩니다.


OpenCV Extra Modules와 함께 OpenCV 3.2를 빌드하는 방법은 "Visual Studio 2017에서 OpenCV 3.2 빌드하기"에서 설명한 방법과 거의 유사합니다. 가장 큰 차이점은 CMake 프로그램에서 Extra modules 소스 코드가 있는 폴더 위치를 지정해주어야 한다는 점인데요, 그 외에도 몇 가지 다른 점이 있으니 아래 내용을 잘 읽으시기 바랍니다.


소스 코드가 제대로 준비되었으면 이제 CMake를 실행합니다. 혹시 이전에 CMake에서 설정했던 내용이 기억되어 있을 경우 새로 빌드하는 과정에서 예상치못한 에러가 발생할 수도 있으니 [File] -> [Delete Cache] 메뉴를 한 번 실행하는 것을 권장합니다. 그리고 (예전에 했던 것과 동일하게) Where is the source code: 에는 C:\opencv\opencv-3.2.0 폴더를 선택하고, Where to build the binaries: 항목은 C:\opencv\mybuild 폴더를 선택합니다. 그리고 [Configure] 버튼을 클릭하고, "Visual Studio 15 2017 Win64" 항목을 선택합니다.


CMake 설정에서 변경해야할 사항은 아래와 같습니다.

  • BUILD_EXAMPLES: 선택 (Optionial)
  • BUILD_opencv_world: 선택 안함 (기본값 변경 안함)
  • INSTALL_PYTHON_EXAMPLES: 선택 (Optional)
  • OPENCV_EXTRA_MODULES_PATH: C:/opencv/opencv_contrib-3.2.0/modules
  • WITH_CUDA: 선택 해제 (VS2017 지원 안함)
  • WITH_OPENGL: 선택 (Optionial)


위 설정에서 중요한 것은 OPENCV_EXTRA_MODULES_PATH 항목을 C:/opencv/opencv_contrib-3.2.0/modules 로 지정하는 것입니다. C:/opencv/opencv_contrib-3.2.0/ 폴더가 아니라 그 아래에 있는 modules 폴더를 지정해야 합니다.


그리고 이전에 OpenCV 기본 소스 코드만 빌드할 때에는 BUILD_opencv_world 항목을 선택해서 빌드를 했지만, opencv_contrib 소스까지 함께 빌드할 때에는 BUILD_opencv_world 항목을 선택하면 에러가 발생합니다. 이는 OpenCV 3.2 릴리즈 버전의 소스 코드를 빌드할 때 발생하는 문제인데요, 일종의 버그라고 보시면 됩니다. 좀 더 최신의 OpenCV 소스 코드를 사용하여 빌드하면 BUILD_opencv_world 항목을 선택하여 빌드하여도 문제가 발생하지 않는데요, 일단 정식으로 릴리즈된 3.2 버전에 대해서는 위와 같은 형태로 선택하시는 것이 좋습니다.


Python과 관련된 설정을 살펴보면 Python3 관련 설정을 자동으로 되어 있고, Python2 관련 설정은 비어있는 것을 확인할 수 있습니다. (물론 이것은 제 시스템 설정과 관련된 것이고, 혹시라도 Python2를 설치하였다면 관련 항목이 보이는 것이 맞습니다.)


일단 위의 설정을 완료했으면 [Configure] 버튼을 다시 클릭합니다. 그리고 약간의 시간이 지나면 아래와 같은 화면이 나타납니다.


이전에 OpenCV 기본 소스만 설정할 때에는 [Configure] 버튼을 클릭하면 곧바로 모든 항목의 빨간색이 사라졌는데요, 이번에는 Extra modules 관련된 설정이 빨간색으로 새로 나타납니다. 특별히 설정을 변경할 것이 없다면 그대로 다시 [Configure] 버튼을 클릭합니다. 그리고 에러 발생 없이 모든 항목이 흰색으로 바뀌면 [Generate] 버튼을 클릭합니다. 아래에 제 PC의 설정을 아래 [더보기]에 요약해두었습니다.


OpenCV.sln 파일이 정상적으로 생성되면 Visual Studio 2017에서 열어서 빌드 작업을 수행합니다. Debug 모드와 Release 모드로 각각 전체 솔루션 빌드를 수행하고, 이후 INSTALL 프로젝트를 따로 빌드합니다. Debug 모드에서는 Python 프로젝트가 실패하기 때문에 실패 1이 나타날 수 있습니다. Release 모드는 실패 없이 402건 모두 성공했습니다.


정상적으로 빌드가 완료되었기 때문에 Python에서도 OpenCV를 사용할 수 있습니다. 도스창을 열어서 테스트해보면 OpenCV 버전이 잘 출력되는 것을 확인할 수 있습니다.




Posted by kkokkal
: