我有一个在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
应该适合您:)