【发布时间】:2012-07-13 05:53:32
【问题描述】:
我刚刚写了一个小程序,它在颜色阈值二值图像中搜索轮廓,该图像在阈值化后用 canny 处理,但不知何故,它总是为图像中的每个对象找到两个轮廓。
在绘制找到的轮廓的右下角图像中,您可以看到最大的轮廓被绘制了两次,两个轮廓之间有一点偏移。下一张图片显示了该图片的详细视图。
http://img831.imageshack.us/img831/3641/doubleframe2.png
这里只绘制了最大的轮廓两次,但每隔一个轮廓就会随机发生一次。 我只想为每个对象提供一个轮廓,我该如何实现? :/
更新:
由 findContours 方法填充的轮廓向量的大小为 8,而它的大小应该仅为 4。
更新 2:
这是来自 kinect 的 rgb 输入图像
http://img405.imageshack.us/img405/9761/inputimage.jpg
对于颜色阈值,我使用了以下方法
cv::cvtColor(in, out, CV_BGR2HSV);
cv::inRange(out,
cv::Scalar(25, 131, 97),
cv::Scalar(35, 220, 217),
out);
接着是一个大小为 1 的 rect 元素的腐蚀 + 膨胀。
【问题讨论】:
-
请提供原图链接。
-
完成。不得不删除程序的图像,因为我只能发布 2 个链接:/.
-
你为什么在找到轮廓之前就选择精明?为什么不直接在阈值图像上找到轮廓?
-
另外,检查你获得的轮廓数。