我有一个在C语言中工作的连接组件分析代码,它实际上是“学习Opencv”一书的副本。
现在,我正在将所有代码重写为Python,但在Python API中找不到某些函数,比如cvstartfindcours。
我想知道是否有人用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有一个完整的新接口,它涵盖了所有C/C++功能:
^{} 应该对你有用:)
作为scikit图像的一部分,有BSD许可连接组件代码(Cython格式):
https://github.com/scikit-image/scikit-image/blob/master/skimage/measure/_ccomp.pyx
如果你安装了这个软件包,它就简单到
有点过时的回复,但也有这个补丁: http://code.opencv.org/attachments/467/opencv-connectedcomponents.patch
应该是一个更快的实现,仍然很容易调用。 将来某个时候应该整合到主线上。。。
编辑:在3.0发布之前,它已经在主线上运行了一段时间。别问我为什么他们不早点放出来!
免责声明-我是作者:-)
相关问题 更多 >
编程相关推荐