cv::Mat与IplImage 的相互转换

From IplImage or CvMat to cv::Mat:
from definition of cv::Mat
// converts old-style CvMat to the new matrix; the data is not copied by
default
Mat(const CvMat* m, bool copyData=false);
// converts old-style IplImage to the new matrix; the data is not copied by
default
Mat(const IplImage* img, bool copyData=false);

So:
IplImage *myIplImage = cvCreateImage(...);
Mat myIplImageMat=Mat(myIplImage,true); //true if you wish an independent copy
else it will change myIplImage data

Vice-Versa:
again, from the definition of cv::Mat
// converts header to CvMat; no data is copied
operator CvMat() const;
// converts header to IplImage; no data is copied
operator IplImage() const;

That is:

Mat myMat=Mat(...);
IplImage myIplImageMat=myMat; //without * !!!
cvWhatEverOldCFunction(&myMat,...other arguments);

With CvMat is the same.

原文地址:https://www.cnblogs.com/loongfee/p/2720201.html