zzangyeah 2021. 5. 10. 14:17
728x90

1. Visual Studio2019에서 opencv 라이브러리 사용하는 방법

설정

1. 프로젝트 속성에 들어가서 창의 윗부분에 있는 구성 : 모든 구성 / 플랫폼 : x64 로 변경

2. c/c++에 추가 포함 디렉터리에 C:\opencv\build\include 추가

3. 링커 일반에 들어가서 추가 라이브러리 디렉터리에 C:\opencv\build\x64\vc15\lib 추가

4. 링커 입력에 들어가서 추가 종속성에 opencv_world버전d.lib;추가(내경우엔 4.5.2버전이라 opencv_world452d.lib;추가)

5. 프로젝트 속성에서 건드리는 건 다 끝났고 visual studio창으로 돌아와서 솔루션 플랫폼을 x64로 맞춰준다

6. 프로젝트가 들어있는 폴더에 C:\opencv\build\x64\vc15\bin에 들어있는 opencv_world버전.dll이랑 opencv_world버전d.dll파일을 복사해서 붙여넣어주면 끝!

테스트

#include <stdio.h>
#include<opencv2/imgcodecs.hpp>
#include<opencv2/videoio.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main(void) {
	Mat img = imread("Lenna.png");
	imshow("img", img);
	waitKey(0);
	return 0;
}

레나 사진이 뜨면 성공!

2. OpenCV개요

cpu특화 명령어 지원

CUDA와 OpenCL을 통한 GPU활용을 지원

3. OpenCV함수

  • imread() : 이미지 파일 읽어오기
  • imwrite() : 이미지 파일로 저장 ex)imwrite("이미지이름.확장자",객체);
  • empty()
  • namedWindow() : 윈도우창띄우기

4. 기본 자료형 클래스 

  • Point_ 클래스 : 좌표 
  • Size_ 클래스
  • Rect_ 클래스
  • RotatedRect 클래스 : 회전된 사각형을 표현하는 클래스 반시계방향으로 돌아감

5. Mat클래스

//ROI : region of interest(관심영역)

int main(void) {
	Mat img1 = imread("Lenna.png");
	Mat img2 = img1(Rect(10, 10, 50, 50));
	Mat img3 = img1(Rect(80, 20, 10, 10)).clone(); //deepcopy

	img2 = ~img2;
	img3 = ~img3;

	imshow("img1", img1);
	imshow("img2", img2);
	imshow("img3", img3);
	waitKey();
	destroyAllWindows();

	return 0;
}

img2는 얕은 복사를 해서 원본 이미지(img1)에 영향O

img3는 깊은 복사를 해서 원본 이미지(img1)에 영향X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//동영상
#include <stdio.h>
#include<iostream>
#include<opencv2/imgcodecs.hpp>
#include<opencv2/videoio.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;

int main(void) {
	VideoCapture cap(0);
	while (1) {
		Mat frame;
		cap >> frame;
		imshow("asdf", frame);
		char key = waitKey(1);
		if (key == 'q') {
			break;
		}
	}
	return 0;
}