我搜索了如何将 IplImage* 转换为 Mat,但所有的答案都是关于转换为 cvMat 的。
那么,我该怎么做?Mat 和 cvMat 有什么区别?
提前致谢。
记录一下:查看core/src/matrix.cpp,似乎构造函数cv::Mat(IplImage*)
已经消失了。
但是我找到了这个替代方法:
IplImage * ipl = ...;
cv::Mat m = cv::cvarrToMat(ipl); // default additional arguments: don't copy data.
这里有一个好的解决方案
Mat(const IplImage* img, bool copyData=false);
请查看Mat文档以获取更多关于Mat的信息。
// converts old-style IplImage to the new matrix; the data is not copied by default
Mat(const IplImage* img, bool copyData=false);
cv::Mat和Mat是同一个意思。
Mat有一个CvMat()运算符,因此简单的赋值就可以使用。
将Mat转换为CvMat
Mat mat = ---------;
CvMat cvmat = mat;
将CVMat转换为Mat
Mat dst = Mat(cvmat, true);
将Mat转换为IplImage*
> 对于单通道
IplImage* image = cvCloneImage(&(IplImage)mat);
> 对于三通道
IplImage* image = cvCreateImage(cvSize(mat.cols, mat.rows), 8, 3);
IplImage ipltemp = mat;
cvCopy(&ipltemp, image);