我正在对图像进行阈值处理,我得到了这个结果:阈值后的图像。
现在我只想实现最大椭圆形的轮廓: 椭圆形。
使用 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()
。希望它能给你一个关于如何进行的想法。干杯!