728x90
반응형








OpenCV에서 IplImage와 Mat 구조체의 차이와 호환









C++에서는 IplImage(ex Imread)를 사용하고 C에서는 Mat 구조체(ex CvLoadImage)를 사용한다.


둘의 차이가 궁금해서 구글링해보니 스택오버플로우에서는 아래와 같은 답변을 해주었다. 결론은 C++를 사용하자는 것.. 필요에 따라 C가 필요할 수 있겠지만 그때는 호환해서 사용함이 좋겠다.









첨부파일
0.00MB



스택오버플로우 답변 :
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);




728x90
반응형