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::cvarrToMat
将CvMat
、IplImage
或CvMatND
转换为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后出错的主要内容,如果未能解决你的问题,请参考以下文章
从 Mat 元素到 IplImage 的 opencv 转换 *
将 c++ opencv IplImage imageData 和 widthStep 转换为 android opencv Mat