【问题标题】:Find all circle objects查找所有圆形对象
【发布时间】:2013-10-28 14:43:21
【问题描述】:

我正在尝试使用 python wrapper for 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)

【问题讨论】:

  • 试试circles = cv2.HoughCircles(blur, cv2.cv.CV_HOUGH_GRADIENT, 1, 16, np.array([]), 15, 36, 9, 35)CircularHough_Grd(red, [3 35],20, 15, 1); 的 matlab 结果在这里(i.stack.imgur.com/bw5HL.jpg)。它似乎仍然能捕捉到更多的气泡。 matlab 版本使用adapthisteq,它在opencv 中的等价物是createCLAHE。我已经尝试过了,但结果并没有太大的不同,这意味着它可能是圆形霍夫实现之间的区别。我注意到较小的 radii 范围可以捕获更多的东西,所以可以尝试多个不同的范围并将它们组合在一起

标签: python opencv image-processing hough-transform


【解决方案1】:

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

尝试为您的半径找到一个合适的范围(minRadius,maxRadius:不要太大,否则一些小圆圈很可能被视为一个大圆圈)也可以改善您的结果。

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

【讨论】:

    猜你喜欢
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2017-04-23
    • 1970-01-01
    相关资源
    最近更新 更多