ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Visual Studio Code에서 CMake 사용하여 OpenCV 코드 컴파일 하기
    OpenCV/Ubuntu 개발 환경 2019.05.09 19:47



    Visual Studio Code에서 cmake를 사용하여 OpenCV 코드를 컴파일 하는 방법을 설명합니다.



    최종 업데이트 - 2019. 5. 9 : CMakeLists.txt 오류 수정




    1. 다음 포스팅을 참고하여 Visual Studio Code 설치 및 설정를 진행합니다.


    Visual Studio Code에서 C/C++ 프로그래밍( Windows / Ubuntu)

    https://webnautes.tistory.com/1158




    2. cmake를 추가로 설치해줍니다.


    $ sudo apt-get install cmake




    3. Visual Studio Code 메뉴에서 파일 > 폴더 열기를 선택합니다.

    폴더 열기 창에서 오른쪽 위에 보이는 폴더 만들기 아이콘을 클릭합니다.




    생성할 폴더 이름을 입력하고 만들기 버튼을 클릭합니다.




    생성된 폴더로 이동됩니다. OK 버튼을 클릭합니다.





    4. 폴더 이름 옆에 마우스 커서를 가져가면 보이는 새파일 아이콘을 클릭하고  




    입력란이 아래 보이면 파일이름( main.cpp)을 입력하고 엔터를 누릅니다. 파일이 생성되면서 편집기에 열립니다.





    다음 코드를 복사해서 붙여넣기합니다.  Ctrl + S를 눌러서 저장합니다.


    #include "opencv2/opencv.hpp"
    #include <iostream>  
     
    using namespace cv;  
    using namespace std;  
     
     
     
    int main(int, char**)  
    {  

       VideoCapture cap(0);  
       if (!cap.isOpened())  
       {
           printf("카메라를 열수 없습니다. \n");  
       }
     
     
       Mat frame;  
       namedWindow("camera1", 1);  
      
     
       for (;;)  
       {
     
           cap >> frame;  
     
           imshow("camera1", frame);  
     
           if (waitKey(20) >= 0) break;  
       }
     
     
       return 0;  
    }  




    5. 앞에서 했던 방식으로 CMakeLists.txt 파일을 생성하고 다음 내용을 복사합니다. Ctrl + S를 눌러서 저장합니다.


    get_filename_component(ProjectId ${CMAKE_CURRENT_LIST_DIR} NAME)

    string(REPLACE " " "_" ProjectId ${ProjectId})

    project(${ProjectId} C CXX)

    set (CMAKE_CXX_STANDARD 11)
    cmake_minimum_required(VERSION 2.8)
    find_package( OpenCV REQUIRED )

    file(GLOB SOURCES  *.cpp)

    add_executable(${PROJECT_NAME} ${SOURCES}  )
    target_link_libraries( ${PROJECT_NAME} ${OpenCV_LIBS} )





    6. Ctrl + Shift + P를 누르고  task를 입력합니다. 검색결과에서 기본 빌드 작업 구성을 선택합니다.  




    템플릿에서 tasks.json 파일 만들기를 선택합니다.




    Others를 선택합니다.




    tasks.json 파일이 열립니다.




    tasks.json 파일을 다음 내용으로 변경하고 Ctrl + S를 눌러서 저장합니다.


    {
       "version": "2.0.0",
       "runner": "terminal",
       "type": "shell",
       "echoCommand": true,
       "presentation" : { "reveal": "always" },
       "tasks": [
             //C++ 컴파일
             {
               "label": "compile for C++",
               "command": "cd ${fileDirname} && cmake . && make",
               "group": "build",

               //컴파일시 에러를 편집기에 반영
               //참고:   https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher

               "problemMatcher": {
                   "fileLocation": [
                       "relative",
                       "${workspaceRoot}"
                   ],
                   "pattern": {
                       // The regular expression.
                      //Example to match: helloWorld.c:5:3: warning: implicit declaration of function 'prinft'
                       "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                       "file": 1,
                       "line": 2,
                       "column": 3,
                       "severity": 4,
                       "message": 5
                   }
               }
           },
           // 바이너리 실행(Ubuntu)

           {

               "label": "execute",

               "command": "cd ${fileDirname} && ./${workspaceFolderBasename} ",

               "group": "test"

           }

       ]
    }




    7. 소스 코드 파일을 선택한 상태에서 Ctrl + Alt + C를 누르면 보이는 메뉴에서 compile for C++를 선택합니다.




    잠시후 컴파일이 진행됩니다.


    > Executing task: cd /home/webnautes/opencv_test && cmake . && make <


    -- The C compiler identification is GNU 7.3.0

    -- The CXX compiler identification is GNU 7.3.0

    -- Check for working C compiler: /usr/bin/cc

    -- Check for working C compiler: /usr/bin/cc -- works

    -- Detecting C compiler ABI info

    -- Detecting C compiler ABI info - done

    -- Detecting C compile features

    -- Detecting C compile features - done

    -- Check for working CXX compiler: /usr/bin/c++

    -- Check for working CXX compiler: /usr/bin/c++ -- works

    -- Detecting CXX compiler ABI info

    -- Detecting CXX compiler ABI info - done

    -- Detecting CXX compile features

    -- Detecting CXX compile features - done

    -- Found OpenCV: /usr/local (found version "4.0.0")

    -- Configuring done

    -- Generating done

    -- Build files have been written to: /home/webnautes/opencv_test

    Scanning dependencies of target opencv_test

    [ 50%] Building CXX object CMakeFiles/opencv_test.dir/main.cpp.o

    [100%] Linking CXX executable opencv_test

    [100%] Built target opencv_test




    8. Ctrl + Alt + R를 누르고 메뉴에서 execute를 선택합니다.




    프로그램이 실행되어 웹캠에서 캡처된 영상이 보이게 됩니다.




    9. OpenCV 헤더파일을 추가하여 관련 함수나 클래스의 정의를 볼 수 있도록 합니다.



    현재 opencv2/opencv.hpp 파일에 대한 정보를 가져올 수 없어서 초록색 줄이 보입니다.

    OpenCV 함수나 클래스의 정의를 볼 수도 없습니다.



    초록색으로 보이는 헤더파일에 마우스 커서를 가져갔을 때 보이는 노란색 전구를 클릭하면 메뉴가 보입니다.

    첫번째 항목인 Add to를 선택합니다.




    잠시후 OpenCV 헤더파일에 보이던 초록색 줄이 사라집니다.




    이제 OpenCV의 함수나 클래스의 정의를 볼 수 있습니다.  

    VideoCapture에 마우스 커서를 가져가면 클래스 정의가 보이며 F12를 누르면 VideoCapture가 정의된 파일로 이동합니다.








    포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
    댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

    여러분의 응원으로 좋은 컨텐츠가 만들어집니다. 지금 본 내용이 도움이 되었다면 후원 또는 유튜브 구독 부탁드립니다. 감사합니다 : )

    유튜브 구 독 하 기
    후 원 하 기


    댓글 29

Designed by Tistory.