OpenCV에서 IplImage와 Mat 구조체의 차이와 호환
C++에서는 IplImage(ex Imread)를 사용하고 C에서는 Mat 구조체(ex CvLoadImage)를 사용한다.
둘의 차이가 궁금해서 구글링해보니 스택오버플로우에서는 아래와 같은 답변을 해주었다. 결론은 C++를 사용하자는 것.. 필요에 따라 C가 필요할 수 있겠지만 그때는 호환해서 사용함이 좋겠다.
스택오버플로우 답변 :
http://stackoverflow.com/questions/11115272/cvmat-and-imread-vs-ipimage-and-cvloadimage
그리고 IplImage가 OpenCV1에서 부터 사용되어왔기 때문에 예제나 소스코드가 구글에 널린건 다 알려진 사실이다. IplImage는 C언어를 쓰던 시절에 이미지를 담은 변수이고, C++로 옮겨온 이후로는 CvMat을 쓴다고한다.
하지만 성능(?)은 Mat 구조체를 쓰는 것이 훨~씬 더 정직하기 때문에 앞으로 Mat을 사용하기로 한다. 그래서 오늘부터 C++ 공부를 시작해보기로 했다. C++ 공부도 포스팅 할 예정이다.
IplImage와 CvMat 구조체의 호환법은 다음과 같다.
Mat l;
IplImage* pl = &l.operator IplImage();
CvMat* ml = &l.operator CvMat();
Cv::Mat -> IplImage*
cv::Mat matImg;
IplImage* iplimg;
iplimg = &IplImage(matImg);
IplImage* -> cv::Mat
IplImage* iplimg;
cv::Mat matImg;
matImg(iplimg);
'Programming > OpenCV' 카테고리의 다른 글
Opencv 픽셀 값 접근하기 - IplImage 데이터 구조 (0) | 2016.01.05 |
---|---|
OpenCV 트랙바 처리된 이진화 영상처리 in C++ (0) | 2016.01.05 |
OpenCV 히스토그램 그리기 in C++ (2) | 2016.01.05 |
64bit 환경에서 Opencv 3.0 설치 시 에러 (2) | 2016.01.01 |
lnk2019 외부 기호 참조 위치 함수 에서 확인 하지 못했습니다 (1) | 2016.01.01 |