找到所有圆形对象

时间:2013-10-28 14:43:21

标签: python opencv image-processing hough-transform

我正在尝试使用python包装器为opencv查找图像上的所有圆形对象。 类似于this

使用cv2.HoughCircles,但找不到最佳参数。 它有可能吗?

我的代码:

import cv, cv2
import numpy as np

im = cv2.imread("C:/1.jpg")

grey = cv2.cvtColor(im, cv.CV_RGB2GRAY)
blur= grey
#blur = cv2.GaussianBlur(grey, (0,0), 10)
circles =  cv2.HoughCircles(blur, cv2.cv.CV_HOUGH_GRADIENT, 2, 5, np.array([]), 40, 80, 5, 50)#params?
if circles is not None:
        for c in circles[0]:
                cv2.circle(im, (c[0],c[1]), c[2], (0,255,0),2)
edges = cv2.Canny( blur, 40, 80 )

cv2.imwrite("C:/circle.jpg",im)
cv2.imwrite("C:/canny.jpg",edges)

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

对于您提供的图像,这不是一件容易的事。

尝试为你的半径找到一个好的范围(minRadiusmaxRadius:不要太大,否则一些小圆圈会被视为一个大圆圈)也会改善你的结果。

否则我会建议用另一种方法(例如watershedding)分隔对象