잡동사니
[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();