포스트

C++ 에서 dll 만들어서 사용하기(4) - openCV 동적 라이브러리(dll) 사용하기

https://m.blog.naver.com/dorergiverny/223057719024

[OpenCV][C++] 최신 OpenCV 설치하기 (쉬운방법), visual studio 2019 2022 버전 설치 확인 cmake 환경설정 library 라이브러리 세팅 영상처리, 컴퓨터 비전을 공부하시는 분들은 OpenCV에 대해 들어보셨을 꺼에요. 이번에는 최신 버전 Op… 영상처리, 컴퓨터 비전을 공부하시는 분들은 OpenCV에 대해 들어보셨을 꺼에요. 이번에는 최신 버전 Op…

https://rehtorb-algorithm.tistory.com/10 https://fwanggu-lee.tistory.com/43

sticker



  • OpenCV 다운로드 & 설치

https://opencv.org/releases/

Releases OpenCV – 4.9.0 2023-12-28 Docs Sources GitHub Windows iOS pack Android Release Notes OpenCV – 4.8.1 2023-09-27 Docs Sources GitHub Windows iOS pack Android Release Notes OpenCV – 4.9.0 2023-12-28 Docs Sources GitHub Windows iOS pack Android Release Notes OpenCV – 4.8.1 2023-09-27 Docs Sources GitHub Windows iOS pack Android Release Notes

버전 별로 관리하기 위해서 opencv 폴더에 다시 opencv490 폴더를 만들어서 그 안에 설치함.


2. Visual Studio에서 콘솔 앱 프로젝트 생성** **

프로젝트 이름은 CppOpenCV_1 로 하였음.


3. 솔루션 속성 창에서 경로 입력

'C/C++'  » '일반' » '추가 포함 디렉터리'

opencv설치경로\opencv\build\include

'링커' » '일반' » '추가 라이브러리 디렉터리' ** **opencv설치경로\opencv\build\x64\vc16\lib

모든 구성에서는 세팅 완료!

이제 Debug 모드와 Release 모드에서 사용하는 라이브러리를 추가해줘야 한다.

이건 두 가지 방법 중 한 가지로만 하면 되는데, 먼저 제일 간단하게 코드로 추가하는 방법이 있다.


1
2
3
4
5
#ifdef _DEBUG
#pragma comment(lib, "opencv_world440d.lib")
#else
#pragma comment(lib, "opencv_world440.lib")
#endif

이게 아니라면 전과 마찬가지로 속성 페이지에서 따로 추가해준다.

'구성' - 'Debug' 로 변경 ** **'링커' » '입력' » '추가 종속성'

Debug 구성에서는 세팅 완료! ** ** '구성' - 'Release' 로 변경 ** **'링커' » '입력' » '추가 종속성'** **

Release 구성에서도 세팅 완료!** **


그런데 이 상태에서 opencv 코드를 작성하여 빌드하면 opencv_world490d.dll이 없다는 오류가 나타남.


이유는 dll을 추가해주지 않았기 때문이다. ** **따라서 ** **1) dll의 위치를 설정해주거나, ** **2) 프로그램 실행파일 경로에 dll을 복사해 넣어주거나 ** **둘 중 하나의 방법을 사용하면 된다.


dll의 위치 경로를 입력해주려면 ** **속성 페이지에서 '모든 구성' 으로 설정 후, ** **'디버깅' » '환경'

1
opencv설치경로\opencv\build\x64\vc16\bin;%PATH%

추가


직접 dll을 실행파일 경로에 복사하는 방법을 선택한다면, ** **프로젝트의 디버그 빌드 경로에는 490d.dll을, ** ** 릴리즈 빌드 경로에는 490.dll을 복사해서 넣어주면 됨. ** **(lib경로가 아닌, bin(바이너리) 경로 내에 있는 dll을 복사해와야 함)

디버그 버전 용량은 127MB, 릴리즈 버전 용량은 64MB 이다.** **

dll 도 세팅 완료!** **


이제 이미지를 저장해놓고,

F9으로 Break point를 걸어주고, F5를 눌러 Debug Mode에서 실행해주고, ** **Image Watch 창을 띄워주면,

1
2
3
4
5
6
7
8
#include 
#include 

int main(int argc, char *argv[])
{
    cv::Mat src = cv:: imread("./PNG/Lenna512.png", cv::IMREAD_UNCHANGED);
    return 0;
}

정상적으로 동작하는 것을 확인했습니다.** **

sticker

혹시 Lena 이미지를 다운로드하는게 귀찮다면 그냥 코드로만 opencv를 테스트해볼 수 있는 예제를 실행해봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//main
#include
#include
#include
using namespace std;
using namespace cv;
int main()
{
	Mat m = Mat::zeros(10, 10, CV_8UC1);			//10 x 10 검정색 이미지 생성
	int width = m.cols;
	int height = m.rows;

	for (int y &#x3D; 0; y (y, x) << " "; //해당 요소의 값 출력
		}
		cout << endl;
	}
	system("pause");
	return 0;
}

잘 작동합니다!** **

sticker


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.