我刚刚写了一个小程序,它在颜色阈值二值图像中搜索轮廓,在阈值化后用 canny 处理,但不知何故,它总是为图像中的每个对象找到两个轮廓。
在绘制找到的轮廓的右下角图像中,您可以看到最大的轮廓被绘制了两次,两个轮廓之间有一点偏移。下一张图片显示了该图片的详细视图。
http://img831.imageshack.us/img831/3641/doubleframe2.png
这里只绘制了最大的轮廓两次,但每隔一个轮廓就会随机发生一次。我只想为每个对象提供一个轮廓,我该如何实现?:/
更新:
由 findContours 方法填充的轮廓向量的大小为 8,而它的大小应该仅为 4。
更新 2:这是来自 kinect http://img405.imageshack.us/img405/9761/inputimage.jpg
的 rgb 输入图像
的颜色阈值我使用了以下方法
cv::cvtColor(in, out, CV_BGR2HSV);
cv::inRange(out,
cv::Scalar(25, 131, 97),
cv::Scalar(35, 220, 217),
out);
然后是一个大小为 1 的 rect 元素的腐蚀 + 膨胀。