我有:
Mat *depthImage = new Mat(480, 640, CV_8UC1, Scalar::all(0));
在我的代码中我做的更多:
Mat image = *depthImage;
我用它做一些OpenCV的东西,然后我想使用cvBlob
(所以blob分析)。虽然此功能仍然使用IplImage
而不是Mat
。所以我想转换它们。我读过我可以这样做:
IplImage *blobimg = image;
但是它不起作用,我收到了这个错误:
Semantic Issue: No viable conversion from 'cv::Mat' to 'IplImage *' (aka '_IplImage *')
最终我希望能够在newley创建的IplImage
cvLabel(<#const IplImage *img#>, <#IplImage *imgOut#>, <#CvBlobs &blobs#>)
正如您所见,需要从Mat
转换为IplImage
。但它没有用。我的问题是如何解决这个问题?
提前致谢
答案 0 :(得分:2)
正如Martin Beckett在评论中所说,cheatsheet显示了这个解决方案。没有从cv::Mat
到IplImage *
的转换,但是从cv::Mat
转换为IplImage
。
更改行
IplImage *blobimg = image;
到
IplImage blobimg = image;
它应该编译。
调用cvLabel
时,传递参数
cvLabel(&blobimg, ...);