【发布时间】:2015-05-28 17:35:38
【问题描述】:
我在 python 中使用 OpenCV 2.4.8 来分割图像和查找对象。 我想使用 findContours 列出对象并分析它们的面积、形状等。但是,如果我有两个对象仅被一条细的(1 px 宽)对角线隔开,甚至仅在角处对角接触,它们将被识别为一个对象。
这张图说明了问题:
显然有两个对象,但它们被识别为一个。
在 Matlab 中,可以指定一个连通性参数(邻域为 4 或 8)来解决这个问题。这也可以使用opencv以某种方式完成吗?也许使用轮廓的层次结构或其他一些解决方法?
我知道,我可以使用形态腐蚀或开口来分离两个对象,但这可能会导致图像的其他部分出现问题。我已经试过了。
【问题讨论】:
-
OpenCV 3.0 现在有
connectedComponents和connectedComponentsWithStats方法,允许您在 4 和 8 邻居连接之间进行选择。如果可以选择更改版本,请参阅我的回答 here
标签: python opencv connection