Visual Studio를 을 위해 미리 빌드되어 배포되는 OpenCV패키지를 Visual Studio에서 사용하기 위해 필요한 과정을 설명합니다.
Visual Studio 2022에서 진행했지만 다른 버전 의 Visual Studio 에서도 거의 동일하게 설정하면 됩니다. OpenCV 버전 차이로 달라지는 점은 경로 차이입니다.
프로젝트 생성시 Visual Studio 2019는 Visual Studio 2022와 거의 동일하고 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 추가
2023. 12. 3 OpenCV 4.8.1, 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/2058
OpenCV를 위해 설정한 프로젝트를 템플릿으로 만들어서 사용하는 방법을 추가하였습니다.
자세한 내용은 아래 포스트를 참고하세요.
Visual Studio에서 OpenCV 프로젝트 설정을 템플릿으로 만들기
https://webnautes.tistory.com/2135
가벼운 Visual Studio Code와 MinGW를 사용하여 OpenCV 코드를 실행시키는 방법입니다.
하나의 프로젝트에 여러 개의 예제 코드를 두고 사용할 수 있습니다.
Visual Studio Code에서 CMake, MinGW를 사용하여 OpenCV 코드 컴파일 하는 방법
https://webnautes.tistory.com/2127
1. OpenCV 깃허브 저장소에서 Visual Studio를 위한 패키지인 opencv-4.8.1-windows.exe
를 다운로드 받습니다.
https://github.com/opencv/opencv/releases
2. 실행하면 압축을 해제할 위치를 물어봅니다. 위치 변경없이 바로 Extract를 클릭하면 설치 파일이 위치한 곳에 압축이 풀립니다.
가급적이면 압축을 풀고 이름을 변경한 후에 원하는 위치로 복사하세요.
3. 압축을 풀어 생성된 opencv 폴더는 미리 빌드된 OpenCV 라이브러리가 포함되어 있는 build 폴더와 OpenCV 소스 코드가 포함되어 있는 sources 폴더로 구성되어 있습니다.
opencv 폴더 이름을 적당한 이름으로 변경 후 원하는 위치로 복사해줍니다.
본 포스트에서는 OpenCV 폴더가 C:\opencv-4.8.1에 있는 것으로 가정하고 진행합니다.
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) 버튼을 클릭합니다.
Visual Studio 2022에서는 바뀌었습니다. 소스 파일 이름을 입력하고 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.8.1\build\include
13. 왼쪽 항목에서 링커(Linker)를 선택하고 추가 라이브러리 디렉터리(Additional Library Directories) 항목에 OpenCV 라이브러리 파일 위치를 입력합니다.
C:\opencv-4.8.1\build\x64\vc16\lib
14. 왼쪽 항목에서 디버깅(Debugging)을 선택하고 환경(Environment) 항목에 OpenCV 라이브러리 DLL 파일 위치를 입력합니다.
PATH=C:\opencv-4.8.1\build\x64\vc16\bin;%PATH%
15. 구성(Configuration)을 활성 Active(Debug)로 변경하고 변경된 설정 저장 여부를 물어보는 메시지 박스가 보이면 예 버튼을 클릭합니다..
16. 왼쪽 항목에서 링커(Linker) > 입력(Input)을 선택하고 추가 종속성(Additional Dependencies) 항목의 값 맨 앞에 디버그용 라이브러리 이름을 입력합니다. 파일 이름 뒤에 세미콜론(;)을 넣어줘야 합니다.
opencv_world481d.lib;
17. 구성(Configuration)을 Release로 변경하고 변경된 설정 저장 여부를 물어보는 메시지 박스가 보이면 예 버튼을 클릭합니다.
18. 왼쪽 항목에서 링커(Linker) > 입력(Input)을 선택하고 추가 종속성(Additional Dependencies) 항목에 릴리즈용 라이브러리 이름을 입력합니다. 이름 뒤에 세미콜론(;)을 넣어줘야 합니다.
opencv_world481.lib;
19. 이제 설정이 완료되었습니다. 확인 버튼을 클릭하여 속성 페이지 창을 닫습니다.
20. 다음 경로에 있는 코드를 사용하여 프로젝트 설정이 잘 동작하는지 테스트해봅니다.
웹캠에서 영상을 가져와 화면에 보여주는 예제입니다.
C:\opencv-4.8.1\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를 눌러서 실행하면 프로그램만 실행됩니다.
'OpenCV > Windows개발 환경&라이브러리 빌드' 카테고리의 다른 글
Visual Studio에서 OpenCV 프로젝트 설정을 템플릿으로 만들기 (2) | 2023.12.03 |
---|---|
Visual Studio Code에서 CMake, MinGW를 사용하여 OpenCV 코드 컴파일 하는 방법 (2) | 2023.10.21 |
MinGW 용으로 OpenCV 4.5.1 빌드 및 Visual Studio Code에서 사용하는 방법 (0) | 2023.10.20 |
윈도우 환경에서 OpenCV의 VideoCapture가 웹캠 오픈이 늦은 경우 해결 방법 (0) | 2021.06.10 |
Visual Studio 2019에서 CUDA를 적용한 OpenCV 빌드하기 (0) | 2020.07.06 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!