找不到嵌套轮廓

时间:2017-06-25 13:46:29

标签: opencv opencv3.0 contour opencv3.1 opencv-contour

我正在使用findContours()drawContours()方法查找二进制图像中的轮廓。不过这是我的输出:

my output

如果我进一步阈值我的图像,如矩形变得模糊,那么内部是可见的(注意外部曲线和内部曲线合并在左下角):

notice the outer and inner curves are merged at the bottom left

你能解释一下这个以及如何解决它吗?

以下是我的代码段:

void cb_thresh(int,void*)
{vector< vector<Point> > contours; 

vector<Vec4i> hierarchy;
threshold(src, thr,threshval, 255,THRESH_BINARY);
namedWindow("threshold",CV_WINDOW_NORMAL);
imshow("threshold",thr);
findContours( thr, contours, hierarchy,CV_RETR_LIST, CV_CHAIN_APPROX_NONE ); // Find the contours in the image

Scalar color( 255,255,255);

for( int i = 0; i< contours.size(); i++ ) // iterate through each contour

{
drawContours(thr, contours,i, color, CV_FILLED, 8, hierarchy );
}
namedWindow("dst",CV_WINDOW_NORMAL);
imshow("dst",thr);
}

请注意我已删除了轮廓的层次结构。

1 个答案:

答案 0 :(得分:0)

问题在于drawContours(thr, contours,i, color, CV_FILLED, 8, hierarchy );行。传递参数CV_FILLED将填充轮廓内的整个区域。因此矩形被填满了。可以用任何正整数替换CV_FILLED