最近看HS算法时,发现在新的OpenCV3.0已经移除了该算法,于是不得不看老版的。这其中涉及到了CvMat,CvArr,IplImage的使用。关于这三个结构与Mat的转换关系,总结如下:
(1)派生关系:CvArr->CvMat->IplImage
传参问题:CvArr作为函数参数,可传入CvMat或IplImage,但内部都按CvMat处理。
(2)Mat转IplImage和CvMat
IplImage img=IplImage(mat)
CvMat cvmat=mat
(3)CvMat转IplImage和Mat
IplImage img=cvCreateImage(cvGetSize(cvmat),8,1);cvGetImage(cvmat,img);
Mat::Mat(cvmat,copyData=false);
(4)IplImage转CvMat, Mat
CvMat *cvmat=cvCreateMat(img->height,img->width,CV_64FC3);cvConvert(img,cvmat);
或CvMat cvmatt, *cvmat=cvGetMat(img,&cvmatt);
Mat::Mat(img,copyData=false);