OpenCV的Mat IplImage CvMat

在C++接口中许多都是适用Mat object,这些Objects可以随便向IplImage和CvMat通过简单的赋值进行转换,例如:

Mat  I;

IplImage  pI = I;

CvMat  mI  = I;

如果想进行指针转换会稍微复杂一点,需要调用IplImage和CvMat运算符得到指针,为了得到指针需要使用&符号:

Mat  I;

IplImage*  pI = &I.operator IplImage();

CvMat*  mI = &I.operator CvMat();

 

C接口最大的缺点是需要程序员进行内存管理,当不需要使用的Objects时需要释放内存,在程序结束前确保这样做了,否则到导致内存泄漏。为了解决这个问题,OpenCV引入了智能指针,当object不再使用时就会自动释放。

为了使用智能指针,需要使用Ptr进行声明:

Ptr<IplImage>  piI = &I.operator IplImage();

C数据结构转换为Mat Object,使用Mat的构造函数:

Mat  K(piI),  L;

L = Mat(pI);

posted @ 2012-03-28 16:07  Jeffery-Zou  阅读(2828)  评论(0编辑  收藏  举报