我刚刚写了一个小程序,它在一个颜色阈值化的二进制图像中搜索轮廓,在阈值化后用 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);
Run Code Online (Sandbox Code Playgroud)
然后是一个大小为 1 的 rect 元素的腐蚀 + 膨胀。