我搜索了将 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 文档。
// 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);
希望这对您有所帮助。干杯:)