반응형

Visual Studio 2015/2017/2022을 위해 미리 빌드되어 배포되는 OpenCV 4.5.5 패키지를  Visual Studio 2017/2019/2022에서 사용하기 위해 필요한 과정을 설명합니다. 

 

Visual Studio 2019/2022(vc16/vc17)를 위한 공식적인 배포는 없지만 Visual Studio 2017(vc15)를 위해 빌드된 라이브러리를 사용할 수 있습니다. 

사용해본 결과 아직까지는 문제가 없었습니다.  

 

본 포스트에서는 Visual Studio 2019/2022를 사용하여 진행합니다.

한글판은 Visual Studio 2019로 진행한 것이고 영문판은 Visual Studio 2022로 진행한 것인데 거의 동일합니다. 

 

Visual Studio 버전 차이가 있더라도 거의 동일하게 설정을 진행하기 때문에 Visual Studio  2017에서 본 포스팅을 보고 진행해도 큰 문제 없이 진행가능합니다.  

단 Visual Studio  2017의 콘솔 프로젝트 만드는 과정이  예전에 작성한거라 지금과 다를 수 있습니다.



2017. 4. 25 최초 작성

2019. 9. 16 

2020. 8. 17 Visual Studio 2019 추가 

2021. 3. 24 Visual Studio에서 C++ 프로젝트 추가하기 위한 방법 추가 

2021. 9. 25 OpenCV 4.5.3에서 테스트 후 적용

2022. 5. 30 OpenCV 4.5.5, Visual Studio 2022 추가



Visual Studio에서 C++ 프로젝트를 사용하기 위해 필요한 패키지 설명방법을 설명하고 있습니다. 
Visual Studio 2022를 기준으로 하고 있지만 Visual Studio 2017/2019에서도 유사합니다.

C++, Win32 API, MFC 개발을 위해 Visual Studio Community 2022 설치하는 방법
https://webnautes.tistory.com/1681 



OpenCV를 위해 설정한 프로젝트를 템플릿으로 만들어서 사용하는 방법을 추가하였습니다. 
자세한 내용은 아래 포스트를 참고하세요.

Visual Studio 2017/2019에서 OpenCV 프로젝트 설정을 템플릿으로 만들기
https://webnautes.tistory.com/1380



가벼운 Visual Studio Code와 MinGW를 사용하여 OpenCV 코드를 실행시키는 방법입니다.
하나의 프로젝트에 여러 개의 예제 코드를 두고 사용할 수 있습니다.

Visual Studio Code에서 MinGW를 사용하여 OpenCV 코드 컴파일 하는 방법
https://webnautes.tistory.com/1443




1. OpenCV 깃허브에서는 Visual Studio를 위한 패키지인  opencv-4.5.5-vc14_vc15.exe를 다운로드 받습니다.

 

https://github.com/opencv/opencv/releases 

 




2. 다운로드 받은 파일의 이름 opencv-4.5.5-vc14_vc15.exe 에서도 알 수 있듯이  vc14(Visual Studio 2015)와  vc15(Visual Studio 2017)를 위해 미리 빌드된 라이브러리가 배포되고 있습니다. 

 

실행하면 압축을 해제할 위치를 물어봅니다. 위치 변경없이 바로 Extract를 클릭하면 설치 파일이 위치한 곳에 압축이 풀립니다.  

 

디폴트 폴더 이름인  opencv를 변경할 수 없기 때문에 기존에 설치된 OpenCV 라이브러리에 덮어쓰기가 될 수 있습니다. 

 

가급적이면 압축을 풀고 이름을 변경한 후에 해당 위치로 복사하세요. 

 




3. 압축을 풀어 생성된 opencv 폴더는 미리 빌드된 OpenCV 라이브러리가 포함되어 있는 build 폴더와 OpenCV  소스 코드가 포함되어 있는 sources 폴더로 구성되어 있습니다. 

 



opencv 폴더 이름을  적당한 이름으로 변경 후 원하는 위치로 복사해줍니다. 

본 포스트에서는 OpenCV 폴더가 C:\opencv-4.5.5 에 있는 것으로 가정하고 진행합니다. 

 



4. 새 프로젝트 만들기 또는 Create a new project를 클릭합니다. 

Visual Studio 2017이라면  메뉴에서 파일 > 새로 만들기 > 프로젝트를 선택합니다.

 



5-1. Visual Studio 2019/2022라면 Windows 데스크톱 마법사 또는 Windows Desktop Wizard를 선택하고 다음 또는 Next를 클릭합니다. 

 



프로젝트 이름(Project name)을 적어주고 만들기(Create)를 클릭합니다. 

 



5-2. Visual Studio 2017이라면 왼쪽 항목에서 Visual C++ > Windows 데스크톱을 선택하면 중앙에 보이는 항목에서  Windows 데스크톱 마법사를 선택합니다. 

 

이름 항목에 원하는 프로젝트 이름을 적어주고 확인을 클릭합니다. 

 



6-1. Visual Studio 2019/2022라면 애플리케이션 종류(Application type)콘솔 애플리케이션(Console Application)이 선택된 상태에서 빈 프로젝트(Empty project)를 체크하고 확인(OK)을 클릭합니다.

 



6-2. Visual Studio 2017이라면 응용 프로그램 종류콘솔 응용 프로그램이 선택된 상태에서 빈 프로젝트를 체크하고 확인을 클릭합니다.

 

SDL을 체크하면 보안상 대체해서 사용해야 하는 함수들을 알려줍니다. 예를 들어 scanf() 대신 scanf_s() 를 사용하라는 메시지가 보입니다. 

테스트 시에는 체크해제해두는 편이 좋을 듯합니다.

 



7. 솔루션 탐색기(Solution Explorer)소스 파일(Source Files) 항목에서  마우스 우클릭하면 보이는 메뉴에서 추가(Add) > 새 항목(New Item)을 선택합니다. 

 



8. C++ 파일(C++ File)를 선택하고 이름(Name) 항목에 소스 코드 파일이름을 적어준후  추가(Add) 버튼을 클릭합니다.

 



소스 파일(Source File) 항목에 cpp 파일이 추가되면서 해당 파일이 열립니다. 

 



9. 툴바의 솔루션 플랫폼(Solution Platforms) x64로 변경합니다. 

 

 



10. 솔루션 탐색기(Solution Explorer)에서 다음처럼 프로젝트 이름을 선택하고 메뉴에서 프로젝트(Project) > 속성(Properties)을 선택합니다.

 



11. 속성 페이지 창 왼쪽 위에 보이는 구성(Configuration)모든 구성(All Configurations)으로 변경합니다.

Debug 모드와 Release 모드의 공통 부분을 한번에 설정할 수 있습니다. 

 

 



12. 왼쪽 항목에서 C/C++를 선택하고 추가 포함 디렉터리(Additional Include Directories) 항목에 OpenCV 헤더 파일 위치를 입력합니다.

 

C:\opencv-4.5.5\build\include

 

 



13. 왼쪽 항목에서 링커(Linker)를 선택하고 추가 라이브러리 디렉터리(Additional Library Directories) 항목에 OpenCV 라이브러리 파일 위치를 입력합니다.

 

C:\opencv-4.5.5\build\x64\vc15\lib

 

 



14. 왼쪽 항목에서 디버깅(Debugging)을 선택하고 환경(Environment) 항목에  OpenCV 라이브러리  DLL 파일 위치를 입력합니다. 

 

PATH=C:\opencv-4.5.5\build\x64\vc15\bin;%PATH%

 

 



15. 구성(Configuration)활성 Active(Debug)로 변경하고 변경된 설정 저장 여부를 물어보는  메시지 박스가 보이면 예 버튼을 클릭합니다..

 

 



16. 왼쪽 항목에서 링커(Linker) > 입력(Input)을 선택하고 추가 종속성(Additional Dependencies) 항목의  값 맨 앞에 디버그용 라이브러리 이름을 입력합니다. 파일 이름 뒤에 세미콜론(;)을 넣어줘야 합니다. 

 

opencv_world455d.lib;

 

 



17. 구성(Configuration)Release로 변경하고 변경된 설정 저장 여부를 물어보는  메시지 박스가 보이면 예 버튼을 클릭합니다.

 

 



18. 왼쪽 항목에서 링커(Linker) > 입력(Input)을 선택하고 추가 종속성(Additional Dependencies) 항목에 릴리즈용 라이브러리 이름을 입력합니다. 이름 뒤에 세미콜론(;)을 넣어줘야 합니다. 

 

opencv_world455.lib;

 

 



19. 이제 설정이 완료되었습니다. 확인 버튼을 클릭하여 속성 페이지 창을 닫습니다.



20. 다음 경로에 있는 코드를 사용하여 프로젝트 설정이 잘 동작하는지 테스트해봅니다. 

웹캠에서 영상을 가져와 화면에 보여주는 예제입니다. 

 

C:\opencv-4.5.5\sources\samples\cpp\videocapture_basic.cpp

 

/**
  @file videocapture_basic.cpp
  @brief A very basic sample for using VideoCapture and VideoWriter
  @author PkLab.net
  @date Aug 24, 2016
*/

#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <stdio.h>

using namespace cv;
using namespace std;

int main(int, char**)
{
    Mat frame;
    //--- INITIALIZE VIDEOCAPTURE
    VideoCapture cap;
    // open the default camera using default API
    // cap.open(0);
    // OR advance usage: select any API backend
    int deviceID = 0;             // 0 = open default camera
    int apiID = cv::CAP_ANY;      // 0 = autodetect default API
    // open selected camera using selected API
    cap.open(deviceID, apiID);
    // check if we succeeded
    if (!cap.isOpened()) {
        cerr << "ERROR! Unable to open camera\n";
        return -1;
    }

    //--- GRAB AND WRITE LOOP
    cout << "Start grabbing" << endl
        << "Press any key to terminate" << endl;
    for (;;)
    {
        // wait for a new frame from camera and store it into 'frame'
        cap.read(frame);
        // check if we succeeded
        if (frame.empty()) {
            cerr << "ERROR! blank frame grabbed\n";
            break;
        }
        // show live and wait for a key with timeout long enough to show images
        imshow("Live", frame);
        if (waitKey(5) >= 0)
            break;
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}



프로젝트의 소스 파일로 해당 코드를 복사해오고 나서 Ctrl + F5를 눌러서 컴파일 및 실행시켜 봅니다.

실행에 문제가 있다면 백신의 실시간 보호 기능 때문일 가능성이 높습니다. 끄고 다시 해보세요. 

 

명령 프롬프트 창과 함께 웹캠 영상을 보여주는 창이 보이게됩니다. 

 



웹캠 영상이 보이는 창에서  ESC키를 누르면 해당 창이 닫히며 그리고나서 명령 프롬프트 창에서 엔터를 눌러야 합니다. 




21. 툴바의  솔루션 구성이  Debug / Release 로 설정되어 있을 때, 각각 문제 없이 동작하는지 확인해봅니다.

 

 




22. 참고로 F5를 눌러서 실행하면 디버거와 함께 프로그램이 실행되고,  Ctrl + F5를 눌러서 실행하면 프로그램만 실행됩니다. 










반응형

진행해본 결과물을 기록 및 공유하는 공간입니다.
잘못된 부분이나 개선점을 알려주시면 반영하겠습니다.


소스코드 복사시 하단에 있는 앵커 광고의 왼쪽 위를 클릭하여 닫은 후 해야 합니다.


문제가 생기면 포스트와 바뀐 환경이 있나 먼저 확인해보세요.
질문을 남겨주면 가능한 빨리 답변드립니다.


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

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

댓글을 달아 주세요

TistoryWhaleSkin3.4">
  1. 이전 댓글 더보기