Я использую методы 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);
}
Обратите внимание, что я удалил иерархию контуров.