我有一个在C中工作的可连接组件分析代码。它实际上是《学习Opencv》一书的副本。

现在,我将所有代码重写为Python,但在Python API中找不到某些功能,例如cvStartFindContours。

我想知道有人在Python中实现了基本的连接组件分析功能。我知道有一些库,但是我正在寻找更简单的东西,仅仅是一个函数或一段代码。

我不需要任何“大”的东西,因为我有一个带有2或3个白色圆圈的纯黑色图像,并且我想找到圆圈的数量及其中心。

我知道我可以自己编写代码,但我更喜欢使用某人的函数或简单的库。

编辑:我通过以下方式解决了它。

def find_connected_components(img):
    """Find the connected components in img being a binary image.
    it approximates by rectangles and returns its centers
    """

    storage = cv.CreateMemStorage(0)
    contour = cv.FindContours(img, storage, cv.CV_RETR_CCOMP, cv.CV_CHAIN_APPROX_SIMPLE)
    centers = []

    while contour:
        # Approximates rectangles
        bound_rect = cv.BoundingRect(list(contour))

        centers.append(bound_rect[0] + bound_rect[2] / 2, bound_rect[1] + bound_rect[3] / 2)

        contour = contour.h_next()

最佳答案

您应该看一下文档。从OpenCV 2.2开始,Python有了一个完整的新接口(interface),它涵盖了所有C / C++函数:)

cv.FindContours 应该适合您:)

10-06 15:38