본문 바로가기

# 미사용/OpenCV

[CLion OpenCV] Windows + CLion + OpenCV 설치하기


 OpenCV 설치 환경




아래와 같은 환경에서 설치를 진행한다.

환경이 정확히 일치하지 않는 경우에는 일부 단계가 다를 수 있다.


필자처럼 셋팅에만 5시간 이상 걸리는 사람이 더 이상 없기를 바라며, 이 글을 작성한다.



설치 환경

  • Windows 플랫폼

  • JetBrain CLion IDE  (mingw compiler)

  • OpenCV 4.x


설치 요약

  • mingw 툴체인 연결

  • OpenCV 컴파일된 버전 다운로드

  • OpenCV 환경 변수 설정

  • CLion 프로젝트에서 CMakeLists 설정하기



 먼저 확인해야 할 사항

자신의 CLion이 mingw 컴파일러를 사용하고 있는지 체크해야 한다.

설치한 기억이 없다면 십중팔구 다른 컴파일러일 확률이 높으므로, 이것부터 교체해야 한다.



STEP 1)

먼저 아래의 링크에서 MinGW 인스톨러를 설치한다.

링크를 클릭하면 이동한다.




STEP 2)

다운로드 받았다면, 

아래의 그림을 그대로 따르고 다음을 누른다.




STEP 3)

CLion Settings에서 ToolChain을 찾은 후,

STEP 2에서 설치된 컴파일러 경로를 가르키도록 한다.




STEP 4)

해당 툴체인을 기본값으로 설정하고, 새로운 프로젝트를 생성한다.

그 뒤, 아래의 코드가 정상적으로 컴파일되는지 확인한다.

#include <bits/stdc++.h>
using namespace std;

int main(){
    cout << "Hello, World!" << endl;
    return 0;
}




 컴파일된 OpenCV 다운로드

원래 OpenCV는 소스코드의 형태로 제공되기 때문에,

자신의 환경과 특성에 맞춰 파라미터를 세팅하고 직접 컴파일해야 한다. 


어떤 특성을 고려해야 하는가?

  • 운영체제

  • 사용할 프로그래밍 언어

  • 컴파일러


하지만 건드려야 하는 파라미터의 수가 많고,

각 의존성까지 생각해야되기 때문에, 잘못하면 엄청난 시간이 잡아먹힌다.


따라서, 우리는 미리 컴파일된 OpenCV를 다운로드 할 것 이다.

이 컴파일된 OpenCV는 x86_64-8.1.0-posix-seh-rt_v6-rev0를 기준으로 컴파일되었다.


아래의 링크에서 원하는 버전을 다운로드하자.

필자는 현재 기준으로 최신 버전인 4.1.1을 다운로드 할 것 이다. 



https://github.com/huihut/OpenCV-MinGW-Build

 

huihut/OpenCV-MinGW-Build

👀 MinGW 32bit and 64bit version of OpenCV compiled on Windows. Including OpenCV 3.3.1, 3.4.1, 3.4.1-x64, 3.4.5, 3.4.6, 3.4.7, 4.0.0-alpha-x64, 4.0.0-rc-x64, 4.0.1-x64, 4.1.0, 4.1.0-x64, 4.1.1-x64 -...

github.com

 



 OpenCV 환경변수 설정하기

STEP 1)

OpenCV 버전을 알아볼 수 있는 변수이름을 사용하여

OpenCV 라이브러리의 루트 디렉토리를 가르키도록 한다.




STEP 2)

path에 bin 폴더를 가르키도록 한다.




STEP 3)

cmd에서 버전체크가 되는지 확인한다.




STEP 4)

재부팅하거나 CLion IDE를 리부트해야 변경된 환경변수를 인식한다.

개인적으로는 재부팅을 추천한다.




 CLion에서 CMakeLists 설정하기

CLion에서 OpenCV를 사용할 수 있도록 연동하는 단계다.

CMakeLists를 통해 OpenCV를 불러올 수 있다.


STEP 1)

프로젝트를 새롭게 생성하고, 

CMakeLists에 다음과 같이 OpenCV 셋팅 명령어를 추가한다.

cmake_minimum_required(VERSION 3.14.1)
project(Hello_OpenCV)
set(CMAKE_CXX_STANDARD 14)

# OpenCV 셋팅 시작
set(OpenCV_DIR $ENV{OPENCV_4.1.1_HOME})
set(OpenCV_INCLUDE ${OpenCV_DIR}/include)
set(OpenCV_BIN ${OpenCV_DIR}/x64/mingw/bin)

include_directories(${OpenCV_INCLUDE})
add_link_options(-L ${OpenCV_BIN}
        -llibopencv_calib3d411
        -llibopencv_core411
        -llibopencv_dnn411
        -llibopencv_features2d411
        -llibopencv_flann411
        -llibopencv_gapi411
        -llibopencv_highgui411
        -llibopencv_imgcodecs411
        -llibopencv_imgproc411
        -llibopencv_ml411
        -llibopencv_objdetect411
        -llibopencv_photo411
        -llibopencv_stitching411
        -llibopencv_video411
        -llibopencv_videoio411)
find_package(OpenCV REQUIRED)
# OpenCV 셋팅 종료

add_executable(Hello_OpenCV main.cpp)


만약 다른 버전을 사용하고 싶다면,

아래의 사항에 주의하여 명령어를 설정하자.


  • OpenCV_DIR은 다음 파일이 있는 폴더를 가르켜야 한다.
    - OpenCVConfig.cmake
    - OpenCVConfig-version.cmake

  • OpenCV_INCLUDE는 하위에 다음 디렉터리가 있는 폴더를 가르켜야 한다.
    - opencv2/

  • OpenCV_BIN은 하위에 다음 파일들이 있는 폴더들을 가르켜야 한다.
    XXX는 OpenCV의 버전 3글자이다.
    - libopencv_calib3dXXX.dll
    - libopencv_coreXXX.dll
    - ...

  • add_link_options의 파일 이름을,
    OpenCV_BIN 아래에 있던 파일 이름으로 변경한다.
    단, 각 파일 이름의 앞에 " -l (대시바 + 소문자 L)"이 붙어있어야 한다.



STEP 2)

CMakeLists가 정상적으로 진행된 것을 확인한다.


만약, 정상적으로 진행되지 않았다면 셋 중 하나다.

  • 환경변수를 올바르게 지정하지 않은경우.

  • 환경변수를 올바르게 지정했지만, 재부팅하지 않은 경우.

  • 환경변수를 이용하지 않았지만, 경로가 올바르지 않은 경우.



STEP 3)

아래의 코드가 정상적으로 컴파일되는지 확인한다.

OpenCV의 버전을 출력하는 프로그램이다.

#include <bits/stdc++.h>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;

int main() {
    cout << "Hello, OpenCV! " << endl;
    cout << CV_VERSION << endl;
    return 0;
}



STEP 4)

원하는 대로 OpenCV 프로그램을 작성하자!