OpenCV-阈值化后获得椭圆形的平滑部分

时间:2018-09-13 19:25:27

标签: opencv image-processing opencv-contour image-thresholding

我正在对图像进行阈值处理,并且达到了以下结果:image after thresholding

现在,我只想获得最大的椭圆形轮廓: oblong shape

使用OpenCV实现此目标的最佳方法是什么?我知道形状有一些分支。有可能摆脱它们吗?

1 个答案:

答案 0 :(得分:0)

我建议您反转阈值图像,以使轮廓为白色,背景为黑色(cv2.threshold(cv2.THRESH_BINARY_INV))。然后,用cv2.findContours()搜索轮廓。要选择所需的轮廓,可以制作一些过滤器以从希望找到的轮廓中消除其他轮廓。您可以在For循环(for i in contours:)中使用过滤器,并为过滤器使用一些条件语句。对于过滤器,您可以尝试轮廓大小(size = cv2.contourArea(i))或高度和宽度(x, y, w, h = cv2.boundingRect(i))。然后,您可以像if size > 100 and h > 100 and w < 50: cv2.drawContours()这样的语句。希望它能给您一个有关如何进行的想法。干杯!