我有:
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 *')
最终我希望能够在新建的IplImage
上使用此函数
cvLabel(<#const IplImage *img#>, <#IplImage *imgOut#>, <#CvBlobs &blobs#>)
可以看到,从Mat
到IplImage
的转换是必需的。但这并没有奏效。我的问题是如何解决这个问题?
Thanks in advance
正如Martin Beckett在评论中所说,备忘单展示了这个解决方案。没有从cv::Mat
到IplImage *
的转换,但有从cv::Mat
到IplImage
的转换。
更改行
IplImage *blobimg = image;
IplImage blobimg = image;
,它应该编译。
调用cvLabel
时,传递像
cvLabel(&blobimg, ...);