반응형

Visual Studio Code에서 손쉽게 OpenCV 코드를 컴파일하고 테스트하는 방법을 다룹니다. 

 



2020. 12. 6 최초작성

2021.  4. 21 기본 셸 관련 에러 해결

2021. 7. 17 VIsual Studio Code 업데이트 후, CMAKE 사용시 바뀐점 반영

2021. 9. 15   CMakeLists.txt에서 누락된 부분 수정

2021. 10. 8 Visual Studio Code 바뀐 부분 수정



윈도우 환경에서 C++로 작성된 OpenCV 코드를 컴파일하기 위해 보통  Visual Studio를 설치하여 사용합니다. 

하나의 프로젝트만 진행하는 경우에는 Visual Studio에서 제공하는 개발환경이 필요할 수 있습니다.

 

하지만 간단히 테스트용으로 사용시에는 매번 Visual Studio에서 프로젝트 생성하고 OpenCV를 설정하는게 번거롭습니다.

예전에 MinGW용으로 OpenCV를 빌드하여 Visual Studio Code에서 사용하는 방법을 소개했었습니다. 



MinGW + Visual Studio Code에서 OpenCV 사용하는 방법

https://webnautes.tistory.com/1344



이 방법을 사용하면 OpenCV 코드를 컴파일시 가벼운 Visual Studio Code를 사용할 수 있지만  MinGW용으로 OpenCV를 빌드해야 하는 수고가 따릅니다.  



그래서 이번엔 미리 빌드되어 배포되는 MinGW용 OpenCV를 찾아서 Visual Studio Code에서 사용하는 방법을 소개합니다. 

 

CMake 빌드 스크립트를 개선하여 하나의 Visual Studio Code  프로젝트(=처음 만든 폴더)에 하위 폴더 별로 OpenCV 코드를 두고 각각 컴파일하여 테스트할 수 있도록 했습니다.

 

하위 폴더 별로 OpenCV DLL 파일을 넣어두어야 실행이 가능합니다. 이 부분을 해결하는 것은 이후로 미룹니다.




1. 아래 링크에서 OpenCV 4.1.1-x64 항목에 보이는 zip를 클릭하여 다운로드합니다. 

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

 



아래처럼 contrib를 포함시킨 최신 버전도 존재하지만 x86용 MinGW로 OpenCV를 빌드해서 사용하지 않았습니다.

필요하면 아래 버전으로 다운로드 후, 본 포스트의 내용을 약간 수정하여 진행하면 테스트 가능할 듯합니다. 

컴파일러는 MinGW-x86-7.3.0을 사용해야 합니다. 주의할 점은 64비트용이기 때문에 32비트에서는 동작하지 않습니다.

 

 



2. 다운로드 받은 압축파일을 풀어서 c:\ 위치에 다음처럼 복사해둡니다.

본 포스트에서는 폴더 이름을 opencv-4.1.1-mingw로 정했다고 가정하고 진행합니다.

 




3. 아래 링크에서 MinGW x86_64-posix-seh를 다운로드 받아야 합니다. OpenCV를 빌드할때 사용했다고 명시된 컴파일러입니다. 

다른 버전을 사용하면 문제가 생길 수 있습니다.

https://sourceforge.net/projects/mingw-w64/files/






4. c:\ 위치에 mingw64 이름으로 복사해두세요. 

 




5. 환경 변수 PATH에 MinGW의 bin 폴더를 추가해야 합니다.

 

윈도우 키 + R을 눌러서 보이는 실행창에서 sysdm.cpl를 입력하고 엔터를 누릅니다. 

 

 

 

고급 탭을 클릭하고 아래 보이는 환경 변수 버튼을 클릭합니다. 

 

 

 

시스템 변수에서 Path를 선택하고 편집 버튼을 클릭합니다. 

 

 

 

새로 만들기 버튼을 클릭한 후.. 맨 아래에 다음 경로를 입력합니다.

C:\mingw64\bin

 

 

 

윈도우 키 + R을 입력 후, cmd 엔터를 눌러서 실행되는 명령 프롬프트 창에서 

다음처럼 gcc -v 명령이 실행 가능해지는지 확인하세요.

 

 

 

 

6. 다음 포스트를 참고하여 Visual Studio Code를 설치하세요.

 

Visual Studio Code 설치하는 방법( Windows / Ubuntu )

https://webnautes.tistory.com/1197 




7. CMake를 설치합니다.

https://cmake.org/download/ 

 




 설치 진행 중 “Add CMake to the system PATH for all users”를 체크해야 합니다. 

 




8. 탐색기 아이콘을 클릭하고 폴더 열기를 클릭합니다. 

 




9.원하는 위치로 이동 후, 새 폴더를 클릭하여 새로운 폴더를 생성합니다. 

 




새로 생성한 폴더로 이동 후, 폴더 선택을 클릭합니다.

 




10. “새 폴더” 아이콘을 클릭한 후, 폴더 이름 webcam-test-1을 입력 후, 엔터를 누릅니다. 

 




11. 새로 생성된 폴더 webcam-test-1을 한번 클릭한 후, 새파일 아이콘을 클릭하고 파일 이름 main.cpp를 입력 후, 엔터를 누릅니다.

 



새로 생성된 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





오른쪽 아래에 다음 다이얼로그가 보이면 Install을 클릭해야 합니다. 이후 과정은 설치가 완료된 후 진행해야합니다.

 




12. 메뉴에서 터미널 > 기본 빌드 작업 구성을 선택합니다. 

 

다음 항목들이 보이면 g++.exe를 클릭합니다.

 



다음 선택 화면이 추가로 보일 수 있습니다.

 

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

 

 

 

Others를 선택합니다.

 




탐색기의 .vscode 폴더에   tasks.json 파일이 추가되고 편집기에서 해당 파일이 열립니다.

 




13. 편집기에 열린 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 . -G \"MinGW Makefiles\" && mingw32-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
                }
            }
        },
        // 바이너리 실행(Windows)
        {
            "label": "execute",
            "command": "cmd",
            "group": "test",
            "args": [
                "/C", "${fileDirname}\\${fileDirnameBasename}"
            ]
        }
    ]
}





14.  IntelliSense 구성을 설정해야 합니다.  Ctrl + Shift + P를 눌러서 보이는 입력 창에 c/c++을 입력한 후, C/C++: 구성 선택...를 선택합니다. 

 

 

 

구성 편집(UI)를 선택합니다.

 

 

 

컴파일러 경로를 g++.exe로 변경합니다. 

 




IntelliSense 모드를 windows-gcc-x64로 변경합니다. 

 




경로 포함에 다음 경로를 추가합니다. 

 

C:\opencv-4.1.1-mingw\include

 



자동으로 설정이 저장되므로 이 페이지를 그냥 닫아도 됩니다. 





15. 파일을 추가할 폴더를 한번 클릭한 후, 새파일 아이콘을 클릭하고 파일 이름 CMakeLists.txt를 입력 후, 엔터를 누릅니다.

 




파일 내용을 다음 내용으로 대체하고 Ctrl + S를 눌러 저장합니다. 

 

cmake_minimum_required(VERSION 3.0)

set(OpenCV_DIR C:/opencv-4.1.1-mingw/)
find_package( OpenCV REQUIRED )


message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

include_directories(${OpenCV_INCLUDE_DIRS})


get_filename_component(ProjectId ${CMAKE_CURRENT_SOURCE_DIR} NAME)
string(REPLACE " " "_" ProjectId ${ProjectId})
project(${ProjectId})

set (CMAKE_CXX_STANDARD 11)

file(GLOB SOURCES  *.cpp)

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





16. 메뉴에서 파일 > 기본 설정 > 바로 가기 키를 선택합니다. 

캡처화면에 빨간색 사각형으로 표시한 아이콘을 클릭합니다.






다음 내용으로 대체하고 Ctrl + S를 눌러 저장합니다. 

 

// 키 바인딩을 이 파일에 넣어서 기본값을 덮어씁니다.
[
    //컴파일
    { "key": "ctrl+alt+c", "command": "workbench.action.tasks.build" },
   
    //실행
    { "key": "ctrl+alt+r", "command": "workbench.action.tasks.test" }
]




17. 이제 빌드를 해봅니다. main.cpp 파일을 선택하여 화면에 코드가 보이도록 합니다. 

Ctrl + Alt + C를 누른 후, Visual Studio Code 상단 중앙에 보이는 compile for C++를 선택합니다.

 



다음처럼 빌드가 진행됩니다. 

 




현재 폴더에 실행파일이 생성됩니다.

 




예제 컴파일 진행시 다음과 같은 오류가 보인다면..

 

'&&' 토큰은 이 버전에서 올바른 문 구분 기호가 아닙니다.

 

 

다음처럼 기본 셸을 변경하여 해결할 수 있습니다.

 

 

Ctrl + Shift + P를 누른 후, default를 입력 하고 터미널 : 기본 프로필 선택을 클릭하세요. 

 

 

Command Prompt를 클릭하세요. 

 




18. C:\opencv-4.1.1-mingw\x64\mingw\bin에 있는 dll 파일을 현재 실행파일이 생성된 폴더로 복사해옵니다. 

dll 파일을 모두 선택 후, 컨트롤키를 누른 상태에서 Visual Studio Code의 탐색기창에 드래그앤 드롭하면 dll 파일들이 복사됩니다. 

 

본 포스팅 방식의 단점은 실행파일이 생긴 위치마다 DLL 파일을 복사해주는 번거로움이 있습니다.

 




19. Ctrl + Alt + R을 눌러서 실행해봅니다. Visual Studio Code 상단 중앙에 보이는 execute를 클릭합니다. 

웹캠이 PC에 연결되어 있어야 동작합니다

 



웹캠 영상을 볼 수 있습니다.  Esc 키를 누르면 영상이 종료됩니다.




20. 이제 새로운 OpenCV 예제를 테스트하려면 탐색기 아래에 보이는 빈 공백을 클릭합니다. 

이래야 새로운 폴더를 루트 폴더 아래에 생성할 수 있습니다.

 




21. 새 폴더 아이콘을 클릭하고 새로운 폴더 이름을 적은 후, 엔터를 누릅니다. 

 




22. 새로 생성한 폴더에 소스코드 파일과 CMakeLists.txt 파일을 생성하고 빌드하면 exe 파일이 현재 폴더에 생성됩니다. 

 





실행을 위해 필요한 DLL 파일을 복사해와야 합니다. 

앞에서 만든 프로젝트 폴더에서 DLL 파일을 모두 선택한 후, Ctrl을 누른 채, 현재 폴더로 드래그앤드롭하면 복사가 됩니다. 

 





진행 해보고,  문제가 생기거나 개선 사항이 있으면  언제든 댓글로 남겨주세요.  



이미지 같은 파일들을 불러오려면 현재 실행 파일의 위치를 기준으로 가져와야 합니다. 

별도의 폴더에 프로젝트 파일들이 위치하고 있지만 Visual Studio Code에서는 부모 폴더 이름을 기준으로 파일들을 가져오려고 하기 때문입니다. 

아래 포스트를 참고하여 이미지 파일을 로드시 경로 앞에 현재 실행파일의 경로를 추가해주세요. 

 

C/C++ - 실행 파일의 절대 경로 얻는 방법 ( realpath, GetModuleFileName )

https://webnautes.tistory.com/1448




반응형

해본 것을 문서화하여 기록합니다.
부족함이 있지만 도움이 되었으면 합니다.


포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
질문을 남겨주면 가능한 빨리 답변드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">
  1. thumbnail
    Favicon of https://thedaftpigeon.tistory.com BlogIcon The Daft Pigeon

    감사합니다 항상 잘 보고있습니다

  2. thumbnail
    Favicon of https://developer-ai.tistory.com BlogIcon AI 로밧

    안녕하세요. 예전 opencv를 이용해 처음 공부했던 2년 전 부터 기본 외곽선 검출, 색감변환, 캠 이용해서 색감 찾기 등 많이 배워왔습니다.

    다만 얼마전 회사에 입사해서 CMake를 이용하여 이 포스트의 내용을 따라 환경 설정 중인데,

    이상하게 계속 17번 단계에서 컴파일하게 되면 다음과 같이
    ------------------------------------------------------------------------------------------------------------------------
    > Executing task: cd C:\opencv-mingw\webcam-test-1 && cmake . -G "MinGW Makefiles" && mingw32-make <

    'cmake'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
    배치 파일이 아닙니다.
    터미널 프로세스 "C:\WINDOWS\System32\cmd.exe /d /c cd C:\opencv-mingw\webcam-test-1 && cmake . -G "MinGW Makefiles" && mingw32-make"을(를) 시작하지 못했습니다(종료 코드: 1).

    터미널이 작업에서 다시 사용됩니다. 닫으려면 아무 키나 누르세요.
    ------------------------------------------------------------------------------------------------------------------------
    이런 에러가 자꾸 나오네요..

    어떻게 경로가 잘못 된건지... 똑같은 폴더명, 파일명으로 실행해봤는데도 자꾸 에러가 납니다.. 혹시 조언해주실 수 있으신지요..?

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.03.26 07:53 신고

      윈도우용 cmake가 설치안되었거나 환경변수 path에 추가안된듯합니다

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.04.21 22:56 신고

      이미 해결하셨을지 모르지만...

      이제서야 원인을 알게되어 다시 답변을 올립니다.

      본 포스트의 17번에 추가해두었습니다.

  3. thumbnail
    Favicon of https://strawberrysmoothie123.tistory.com BlogIcon 딸기스무디

    감사합니다. 덕분에 환경 설정 잘 마쳤습니다.
    gstreamer pipeline으로 영상을 전송하려 하는데 VideoWriter가 열리지 않아 여쭤봅니다..


    #include <iostream>
    #include <opencv2/opencv.hpp>
    #include <opencv2/videoio.hpp>

    using namespace cv;
    using namespace std;

    int main()
    {

    cv::VideoCapture cap;
    cap.open(0);
    if(!cap.isOpened()) {
    cout << "Failed to open camera" << endl;
    return -1;
    }

    const string gst_pipline_0 = "appsrc ! videoconvert ! udpsink host=127.0.0.1 port=9666";

    VideoWriter video_write(gst_pipline_0, 0, 25, Size(640, 480), true);
    if (!video_write.isOpened()) {
    cout<<"Failed to open VideoWrite";
    return -1;
    }

    cv::Mat frame;
    while (true) {
    cap.read(frame);
    video_write.write(frame);

    if (waitKey(1) == 27) { //ESC
    break;
    }
    }

    return 0;
    }

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.04.11 16:45 신고

      안해본 부분이라 답변이 어렵습니다. 구글에서 검색해보니 하시는 방식으로 영상전송을 한분이 있네요.

      https://m.blog.naver.com/PostView.nhn?blogId=jedijaja&logNo=221278212074&proxyReferer=https:%2F%2Fwww.google.com%2F

    • thumbnail
      Favicon of https://strawberrysmoothie123.tistory.com BlogIcon 딸기스무디
      2021.04.11 17:03 신고

      답변 감사합니다

  4. thumbnail
    Favicon of https://dongrae30.tistory.com BlogIcon 장유오땡

    안녕하세요 항상 궁금함을 해결해 주셔서 감사합니다. 지금 포스트된 절차대로 진행하고 있는데 해결하기 힘든 에러가 있어 이렇게 글을 남김니다.

    17번 단락을 해결한 후 Compiler을 진행하는데 이와 같은 에러가 뜹니다.
    -------------------------------------------------------------------------

    CMake Error at CmakeLists.txt:22 (add_executable):
    The target name "$" is reserved or valid for certain CMake features,
    such as generator expressions, and my result in undefined behavior.

    CMake Error at CmakeLists.txt:23 (target_link_libraries):
    Cannot specify link libraries for target "$" which is not built by this project.


    ---------------------------------------------------------------------------------
    내용을 보면 "$"에서 Compiler 가 놓치는 것 같습니다... 어찌 수정을 해야될지 답변 부탁드립니다.

    감사합니다^^;;





    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.09.15 12:50 신고

      도움이 되었다니 다행이네요

    • thumbnail
      Favicon of https://dongrae30.tistory.com BlogIcon 장유오땡
      2021.09.15 14:11 신고

      안녕하세요...도움이 당연히 되었는데 막히는 부분이 있어 이렇게 글을 남겼습니다 ㅠㅠ... 앞에 언급한것처럼 "$"에서 Compiler 가 놓치는 것 같습니다... 어찌 수정을 해야될지 답변 부탁드립니다.

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.09.15 14:26 신고

      티스토리 편집기로 인해 일부 글자가 안보이네요.
      CmakeLists.txt 마지막 2줄을 다음처럼 수정하세요

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

    • thumbnail
      Favicon of https://dongrae30.tistory.com BlogIcon 장유오땡
      2021.09.15 14:42 신고

      안녕하세요...22번 23번째 줄을 바꾸고 cmake로 인해 생겼던 이전 파일을 다 지우고 Compile 하였는데도 똑같은 에러메세지가 발생합니다..

      포스트된 결과와 비교하였는데..

      message(STATUS," version $ ")
      message(STATUS," libraries $ ")
      message(STATUS," include path $ ")

      값이

      -- version: $
      -- libraries: $
      -- include path: $

      처럼 나옵니다. 처음앞쪽부터 path를 정확하게 못찾는거 같습니다... ㅠㅠ 확인부탁드립니다..

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.09.15 14:49 신고

      전체 파일입니다

      cmake_minimum_required(VERSION 3.0)

      set(OpenCV_DIR C:/opencv-4.1.1-mingw/)
      find_package( OpenCV REQUIRED )


      message(STATUS "OpenCV library status:")
      message(STATUS "    version: ${OpenCV_VERSION}")
      message(STATUS "    libraries: ${OpenCV_LIBS}")
      message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

      include_directories(${OpenCV_INCLUDE_DIRS})


      get_filename_component(ProjectId ${CMAKE_CURRENT_SOURCE_DIR} NAME)
      string(REPLACE " " "_" ProjectId ${ProjectId})
      project(${ProjectId})

      set (CMAKE_CXX_STANDARD 11)

      file(GLOB SOURCES  *.cpp)

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

    • thumbnail
      Favicon of https://dongrae30.tistory.com BlogIcon 장유오땡
      2021.09.15 15:17 신고

      안녕하세요 정말감사합니다. cmake관련된 이슈는 해결하였는데.... 마지막 execute 을 할 때 "cmd"은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 는 에러가 뜹니다. 아마 cmd 환경변수 이슈인거 같은데....일단 윈도우에는 환경변수에 cmd는 걸려 있어서 ... 왜 이러한 에러가 뜨는지 잘 이해가 되지 않습니다 ㅠㅠ

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.09.15 15:44 신고

      powershell이 아닌가 확인해보세요

    • thumbnail
      Favicon of https://dongrae30.tistory.com BlogIcon 장유오땡
      2021.09.15 15:49 신고

      처음에는 powershell이라 cmd로 바꾸고 사용하고 있었습니다.

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.09.15 16:19 신고

      실행 명령이 출력되는 터미널창을 다시 확인해보세요

    • thumbnail
      Favicon of https://dongrae30.tistory.com BlogIcon 장유오땡
      2021.09.15 16:34 신고

      네... 다시 확인해봤는데.. 기본값으로 Command Prompt로 설정되어 있습니다...

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.09.15 16:46 신고

      찾아보니 다음 글이 있네요
      https://ssimplay.tistory.com/223

  5. thumbnail
    Favicon of https://leejy99.tistory.com BlogIcon 누가바내꺼

    안녕하세요, 좋은 자료 공부하는데 많이 도움되고 있습니다!
    본문 내용과 똑같이 진행하고 있는데 계속 opencv.hpp 라이브러리를 못찾네요... 경로설정도 제대로 해 줬는데 어떤 가능한 문제가 있을까요?
    시도해 본 방법들) opencv 경로 재설정, opencv 파일 재다운 후 진행, cmd에서 gcc 버전 확인, vs code의 c++과 cmake 관련 확장 전부 uninstall 후 재설치 등등...

    오류메세지) fatal error: opencv2/opencv.hpp: No such file or directory

    본문 알려주신 대로 진행했는데 발생하는 오류이고.. 사실 댓글을 적어도 작성자님께서 제 오류를 정확히 알고 해결책을 주시기에는 너무 모호한 것 같지만 지푸라기라도 잡는 심정으로 댓 남겨봅니다 ㅜㅜ

    추가로 현재 폴더구성이 opencv_test 폴더 밑에 하위로 .vscode 폴더와 webcam_test 폴더가 있고, .vscode에는 .json파일 2개, webcam_test 폴더에는 CMakeLists.txt와 main.cpp 이렇게 두개 들어있는데 이것은 잘 된 것인지요??

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.08 14:52 신고

      CMakeLists.txt에서 다음줄의 경로를 확인해보세요

      set(OpenCV_DIR C:/opencv-4.1.1-mingw/)

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.08 14:55 신고

      빌드시 다음 메시지가 출력되어야 합니다.

      Found OpenCV: C:/opencv-4.1.1-mingw (found version "4.1.1")
      -- Found OpenCV 4.1.1 in C:/opencv-4.1.1-mingw/x64/mingw/lib
      -- You might need to add C:/opencv-4.1.1-mingw/x64/mingw/bin to your PATH to be able to run your applications.
      -- OpenCV library status:
      --     version: 4.1.1
      --     libraries:

    • thumbnail
      Favicon of https://leejy99.tistory.com BlogIcon 누가바내꺼
      2021.10.08 15:20 신고

      해당 부분은 잘 작성이 되어있는데.. opencv.hpp를 찾을 수 없다면서 빌드 자체가 안되는 것 같아요 ㅜㅜ..

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.08 15:23 신고

      Opencv 폴더가 맞나 확인해보세요

    • thumbnail
      Favicon of https://leejy99.tistory.com BlogIcon 누가바내꺼
      2021.10.08 15:25 신고

      작성자분이랑 최대한 똑같이하는게 제가 이상한 실수할 가능성이 적을 것같아 C 하위폴더로 이름 동일하게 opencv-4.1.1-mingw로 진행하였고 하위폴더 include에 opencv2 폴더, 하위에 hpp파일들 있는것 확인했습니다 ㅜㅜ!!

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.08 16:47 신고

      진행하면서 기록한거라 안될리 없는데 이상하네요. 이유는 모르겠지만 CMakeFiles.txt에서 opencv 경로를 못찾는듯합니다

    • thumbnail
      Favicon of https://leejy99.tistory.com BlogIcon 누가바내꺼
      2021.10.08 16:55 신고

      이번에 공부하면서 cmake 대해서도 처음 접했는데, CMakeFiles.txt는 자동으로 생성되는 건가요? 그렇다면 어느 시점에서 생성이 되는건가요? 저는 지금 CMakeFiles.txt 혹은 MakeFiles.txt 파일이 없는데.. 지금 txt파일은 CMakeLists.txt만 존재합니다 혹시 해당 텍스트파일은 제가 직접 쳐줘야 하는 건가요??

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.08 17:09 신고

      CMakeFiles.txt 파일과 소스코드 파일이 필요합니다. 전자는 환경에 맞게 수정해줘야합니다. 여기에선 OpenCV 경로만 맞추면 되고요. 있다가 다시 확인을 해보긴 할겁니다.

    • thumbnail
      Favicon of https://leejy99.tistory.com BlogIcon 누가바내꺼
      2021.10.08 17:23 신고

      음..아무래도 제가 계속 오류발생/수정/오류발생 반복하면서 뭔가 이상해졌을수도있을 것 같아서 아예 폴더 생성 단계부터 다시 진행해보았더니 이번에는 hpp 파일을 찾는 데에는 문제가 없는 듯한데 C:/제경로~~/MinGW Makefiles 가 존재하지 않는다고 CMake Error가 뜹니다. 아마 이래서 CMakefiles가 생성이 안되고 오류가 발생하는 것 같은데 맞을까요?? CMake도 버전이 3.20.6이라 선생님 것과 다르긴 하지만 본문에 나와있는 방식대로 설치하긴 했습니다

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.08 17:31 신고

      정확한 오류 메시지를 복사해서 올려주세요

    • thumbnail
      Favicon of https://leejy99.tistory.com BlogIcon 누가바내꺼
      2021.10.08 17:34 신고

      CMake Error: The source directory "C:/vscode/opencv_test_retry/webcam_test_retry1/MinGW Makefiles" does not exist.
      Specify --help for usage, or press the help button on the CMake GUI.
      The terminal process "C:\WINDOWS\System32\cmd.exe /d /c cd c:\vscode\opencv_test_retry\webcam_test_retry1 &&cmake .-G "MinGW Makefiles" &&mingw32-make" terminated with exit code: 1.

      이렇게 뜹니다

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.08 18:16 신고

      cmake 버전을 포스트와 동일하게 바꿔보세요

    • thumbnail
      Favicon of https://leejy99.tistory.com BlogIcon 누가바내꺼
      2021.10.08 18:27 신고

      음..3.19.1 버전으로 다시 깔았는데도 동일한 문제가 발생하네요 ㅠㅠ 아마 tasks.json 파일의 "command":"cd ${fileDirname} &&cmake .-G \"MinGW Makefiles\" &&mingw32-make", 부분에서 문제가 생기는 게 아닐까 싶은데..주말동안 작업할 수가 없어서 구글링과 자료조사 더 해보고 월욜에 더 끙끙대 보겠습니다 ㅜㅜ

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.08 18:31 신고

      이부분에서 띄어쓰기가 안되었거나 마이너스 기호가 잘못된건 아닌지 보세요.. 에러를 보면 MinGW까지 디렉토리 경로로 보네요.. 뒤에 주어진 옵션인데

      cmake . -G \"MinGW Makefiles\"

    • thumbnail
      Favicon of https://leejy99.tistory.com BlogIcon 누가바내꺼
      2021.10.08 18:36 신고

      제가 본가에 내려가야해서 나온상태라 일욜 저녁까지는 작업이 불가능한데 아마 지적해주신 부분이 맞을것같습니다!!! 안그래도 해당부분 타이핑할때 띄어쓰기가 맞나 헷갈리긴했는데 별 상관없을줄알고 대강 했거든요 그부분때문에 에러가 생겼나보군요! . - 사이에 이렇게 띄어쓰기를 하라는 뜻 맞으시지요?? 정말감사합니다 ㅠ 꼭해결이되어야할텐데.. 일욜에 다시 돌려보고 후기 남길게요!! 정말 감사드려요 ㅎㅎ

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.08 19:00 신고

      네 맞습니다 현재위치 경로를 의미하는 .과 -가 붙으면서 뒤에 옵션이 디렉토리 경로에 추가된듯합니다.

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.08 20:22 신고

      vscode에 바뀐점도 있고해서 포스트 업데이트할겸 다시 해보니 오타 문제가 맞는듯합니다.

    • thumbnail
      Favicon of https://leejy99.tistory.com BlogIcon 누가바내꺼
      2021.10.10 20:23 신고

      안녕하세요 집 돌아와서 알려주신 부분 고쳐보니 정말 행복하게도 ㅜㅜ 빌드가진행이 됩니다! 다만 또다른 문제가 불행히도^^.. 생겨버렸는데요
      빌드가 50퍼센트 진행되었다는 메세지가 뜬 시점에서

      In file included from C:/opencv-4.1.1-mingw/include/opencv2/core.hpp:3291,
      from C:/opencv-4.1.1-mingw/include/opencv2/opencv.hpp:52,
      from C:\vscode\opencv_test_retry\webcam_test_retry1\main.cpp:1:
      C:/opencv-4.1.1-mingw/include/opencv2/core/utility.hpp:701:14: error: 'recursive_mutex' in namespace 'std' does not name a type
      typedef std::recursive_mutex Mutex;
      ^~~~~~~~~~~~~~~
      C:/opencv-4.1.1-mingw/include/opencv2/core/utility.hpp:701:9: note: 'std::recursive_mutex' is defined in header '<mutex>'; did you forget to '#include <mutex>'?
      C:/opencv-4.1.1-mingw/include/opencv2/core/utility.hpp:63:1:
      +#include <mutex>
      #endif
      C:/opencv-4.1.1-mingw/include/opencv2/core/utility.hpp:701:9:
      typedef std::recursive_mutex Mutex;

      와 같은 오류 메세지가 주르륵 뜨며 빌드완료가 안되네요(Makefile 등은 생성이 됩니다)

      구글링해보니 유사한 상황의 스택오버플로우 글이 8년 전에 작성이 되었는데..https://stackoverflow.com/questions/14191566/c-mutex-in-namespace-std-does-not-name-a-type 윈도우에서 mingw를 쓸 때 흔히 발생하는(했던?)오류라고 하네요. 하지만 작성자분께서도 글 초입에 윈도우 환경에서 개발할 때라고 말씀하신걸보면 지금은 해결된 문제인 듯한데 저는 혼자 8년전을 살고 있는것인지.. ㅋㅋㅋ 아무튼 이부분 더구글링해서 해결해야할 제 숙제인 듯합니다 도움주셔서 정말 감사합니다 ㅎㅎ

      +추가로 처음에 opencv2/opencv.hpp 못찾던 이유를 발견한 것 같습니다 제가 ctrl+alt+c 하면 compile for c++ 항목과 save하고 compile하기 라는 항목이 떴는데 후자를 선택하면 컴파일러가 기본 설정으로 되어서 제대로 안되는 듯하고, tasks.json에서 설정해준 compile for c++로 해주면 제대로 동작하는 듯하더라구요 결국 제 실수였네요 ㅎㅎ

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.10 21:03 신고

      혹시 MinGW를 새로 다운로드 안받고 기존꺼를 사용하면 문제가 될 수 있습니다. 포스트에 언급한 것을 사용해야 합니다.

    • thumbnail
      Favicon of https://leejy99.tistory.com BlogIcon 누가바내꺼
      2021.10.10 21:42 신고

      와~ mingw 버전이 posix가 아니라 win32 더군요 그부분 바꾸니까 잘 동작합니다ㅜㅜ 너무너무 기뻐요 친절하게 도와주셔서 정말감사드립니다~~ 초보자라 구글링도 익숙치 않아서 여러모로 고생중이었는데 덕분에 꽤나 수월하게 해결했어요 정말 감사드립니다 ㅎㅎㅎㅎ

    • thumbnail
      Favicon of https://webnautes.tistory.com BlogIcon webnautes
      2021.10.10 21:48 신고

      해결되서 다행입니다. ^^