我需要将垫子转换为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);
第一次写入有效,但在第二次写入异常。有任何想法吗?
最佳答案
您可以使用 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));
关于c++ - opencv:将iplimage转换为Mat后发生错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35503030/