c – cv :: findContours正在修改源图像OpenCV 2.3

前端之家收集整理的这篇文章主要介绍了c – cv :: findContours正在修改源图像OpenCV 2.3前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
从OpenCV文档中,cv :: findContours中的源图像被获取为const,但我的应用程序正在发生一些奇怪的事情.我正在使用cv :: inRange函数获取特定颜色的阈值图像,然后,使用cv :: moments,我可以在阈值图像中获得白色像素的中心,这是正常的.

另外,我想实现用于寻找最大轮廓和在该轮廓中定位中心力矩的代码.在代码添加了cv :: findContours后,我在输出中发现了奇怪的行为,之后我想使用以下代码检查源图像的内容

cv::Mat contourImage;
threshedImage.copyTo(contourImage); // threshedImage is the output from inRange
cv::findContours(threshedImage,contours,CV_RETR_LIST,CV_CHAIN_APPROX_NONE,cv::Point(0,0));
cv::Mat temp;
cv::absdiff(threshedImage,contourOutput,temp);
cv::namedWindow("absdiff");
cv::imshow("absdiff",temp);

在此之后,输出显示threshedImage和contourImage之间存在差异.这怎么可能?有没有人与cv :: findContours有类似的结果?

解决方法

错误The docs明确指出:

Source image is modified by this function.

因此,如果您需要原始图像完整,请复制此图像并将副本传递给cv :: findContours().

原文链接:https://www.f2er.com/c/118231.html

猜你在找的C&C++相关文章