안녕하세요. 처음 외부 라이브러리나 dll을 적용할 때 참 어려움을 많이 겪었었습니다. 그 중에서 opencv 적용하기에 대해 포스팅을 쓰려고합니다. 오늘 포스팅을 보시면 비단 opencv뿐만 아니라 다른 라이브러리도 적용하기가 수월하실거에요. 저는 visual studio2019 버전에서 빌드했습니다. 시작하겠습니다.
1. opencv 다운받기
에서 openCV 4.4.0을 다운받고 압축해제 합니다. 저는 따로 opencv관리 폴더를 만들어 저장합니다.
2. visual studio 프로젝트 설정
모든 구성으로 바꿔주시구요. 플랫폼은 x64입니다. x86은 CMake로 따로 만들어 주거나, openCV 낮은버전 릴리즈에 포함되어 있습니다.
3. 헤더파일 경로 추가해주기
C/C++ -> 일반 -> 추가포함 디렉터리
여러분의 설치경로에 따라 파란색 부분처럼 추가해주시면 됩니다.
tip) 파란색 부분은 절대경로인데 바로위는 솔루션디렉토리를 기준으로한 상대경로입니다. 저같은 경우는 위의 방식을 선호하는데요. 프로그램이 다른 pc로 이동되면 절대경로는 무용지물이기 때문이죠.
4. lib 파일경로 추가해주기
링커 -> 일반 -> 추가 라이브러리 디렉터리
5. lib 파일 실행바이너리에 추가
4번에 해당하는 경로에 가보시면 opencv_world440d.lib (디버그용), opencv_world440.lib (릴리즈용) 파일이 있는걸 확인하실 수 있습니다.
2번과정 처럼 구성을 Debug와 Release로 바꾸시면서 링커 -> 입력 -> 추가 종속성에 lib파일명을 입력해줍시다.
해당 방법 말고도 코드레벨에서도 추가가 가능한데 pragma 지시어를 이용합니다. 두번째 인자는 파일명이 포함된 경로가 들어가면 됩니다. 4번과정에서 lib 경로를 추가해줬으니 파일명만 쓰면되겠네요 ^^
6. 마지막 단계입니다.
동적 라이브러리를 활용하기 위해서는 .lib, 헤더파일, .dll이 있어야합니다. 1~5번과정에서 헤더, lib를 추가해줬으니 마지막으로 dll을 추가해줘야겠죠. 우리는 1) dll의 위치를 설정해주거나, 2) 프로그램 실행파일에 dll을 넣어주거나 두 개의 방법을 쓸 수가 있습니다.
1번 방법 : 구성을 모든구성으로 바꾸시고
구성속성 -> 디버깅 -> 환경 -> dll파일이 있는 경로 추가
2번 방법 : 프로그램을 배포하거나, exe로 실행할 때 필요한 dll을 실행파일 경로에 넣어주는 건데 저는 이게 편하더라구요.
다 완료했으면 코드를 실행해봐야겠죠?
//main
#include<iostream>
#include<string>
#include<opencv2/opencv.hpp>
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 = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
cout << (int)m.at<uchar>(y, x) << " "; //해당 요소의 값 출력
}
cout << endl;
}
system("pause");
return 0;
}
포스팅 내용에 오류가 있거나 지적사항이 있다면 댓글로 달아주세요. 배움을 멈추지 않는 Good Programmer가 되겠습니다. 감사합니다.
'openCV' 카테고리의 다른 글
[openCV] C++ openCV cv::imread 이미지 읽어오기 (0) | 2020.10.11 |
---|
댓글