我正在对图像进行阈值处理,我实现了这个结果:image after thresholding。
现在我想只实现最大椭圆形的轮廓:oblong shape。
使用OpenCV实现它的最佳方法是什么?我知道这个形状有一些分支。是否有可能摆脱它们?
我建议您反转阈值图像,使轮廓为白色,背景为黑色(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()
这样的陈述。希望它能让您了解如何继续。干杯!