opencv:将iplimage转换为mat后出错

时间:2016-02-19 10:29:54

标签: c++ opencv mat iplimage

我需要将垫子转换为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工作,但在第二个,我得到一个例外。有什么想法吗?

1 个答案:

答案 0 :(得分: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));