opencv:将iplimage转换为mat后出错

Posted

技术标签:

【中文标题】opencv:将iplimage转换为mat后出错【英文标题】:opencv: error after conversion of an iplimage to a mat 【发布时间】:2016-02-19 10:29:54 【问题描述】:

我需要将垫子转换为 iplimage 并返回,以便绘制一条线。 到目前为止我的代码:

Mat mat = imread(path);
Point p,q;
...
imwrite(path1,mat1);
IplImage img = mat1;
cvDrawLine(&img,p,q,Scalar(0,0,255));
mat1 = Mat(&img);    //i also tried mat1=&img;
imwrite(path2,mat1);

第一个 imwrite 有效,但在第二个,我得到一个异常。有什么想法吗?

【问题讨论】:

你可以用.... "cv::line" 画一条线。你真的应该避免像iplimage这样过时的C语言。 谢谢,没找到那个功能... 【参考方案1】:

您可以使用cv::cvarrToMatCvMatIplImageCvMatND 转换为Mat

对于你的情况,它会像:

mat1 = cv::cvarrToMat(&img, true); 

PS:正如@Miki 所说,您应该避免使用过时的 C OpenCV API。使用 C++ API,它只是:

cv::line(mat1, p, q, cv::Scalar(0, 0, 255));

【讨论】:

以上是关于opencv:将iplimage转换为mat后出错的主要内容,如果未能解决你的问题,请参考以下文章

将 IplImage 转换为 Mat 时出错

opencv:将 Mat 转换为 IplImage 问题

从 Mat 元素到 IplImage 的 opencv 转换 *

将 c++ opencv IplImage imageData 和 widthStep 转换为 android opencv Mat

opencv中Mat与IplImage,CVMat类型之间转换

opencv编程中cvMat到Mat如何进行数据转换?