잡동사니

[OpenCV] 자주 사용되는 코드

pagebox 2018. 12. 11. 12:08

1. IplImage를 Mat 형으로 변환 (IplImage->Mat)

IplImage *image1;

Mat image2;

image2 = cvarrToMat(image1);


2. Mat를 IplImage 형으로 변환 (Mat->IplImage)


- 첫 번째 방법

IplImage *image1;

Mat image2;

image1 = new IplImage(image2);


- 두 번째 방법

IplImage *image1;

IplImage temp;

Mat image2;

temp = image2;

image1 = &temp;


- 세 번째 방법 (두 번째 방법의 변형입니다.)

Mat image2;

IplImage *image1 = &IplImage(image2);


(※ 첫 번째 방법의 경우 메모리 누수가 발생하기 때문에, 개인적으로는 마지막 세 번째 방법을 추천합니다.)

3. Mat 값 복사

Mat 값을 다른 이름의 변수에 복사(저장)할 때 자주 범하는 실수가 아래와 같이 직접 대입을 할 경우입니다. 이 경우 포인터가 복사되어 같은 이지 데이터를 공유합니다.

Mat image1, image2;

image1 = image2;

따라서, 아래와 같이 clone() 매서드를 사용해야 독립된 Mat 정보를 사용할 수 있습니다.

Mat image1, image2;

image1 = image2.clone();