我正在使用findContours()
和drawContours()
方法查找二进制图像中的轮廓。不过这是我的输出:
如果我进一步阈值我的图像,如矩形变得模糊,那么内部是可见的(注意外部曲线和内部曲线合并在左下角):
你能解释一下这个以及如何解决它吗?
以下是我的代码段:
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);
}
请注意我已删除了轮廓的层次结构。
答案 0 :(得分:0)
问题在于drawContours(thr, contours,i, color, CV_FILLED, 8, hierarchy );
行。传递参数CV_FILLED将填充轮廓内的整个区域。因此矩形被填满了。可以用任何正整数替换CV_FILLED
。