【问题标题】:OpenCV Hough Circle Transform Not WorkingOpenCV霍夫圆变换不起作用
【发布时间】:2016-07-28 20:05:43
【问题描述】:

我已按照 OpenCV 的教程 here 在我的 Raspberry Pi 上进行圆形检测。这是我使用的代码,与教程相同,只是图像不同。

import cv2
import numpy as np

img = cv2.imread('watch.jpg',0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
                       param1=50,param2=30,minRadius=0,maxRadius=0)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

cv2.imshow('image',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

然后当我运行脚本时,这就是我看到的

这是原图

发生这种情况的原因是什么?

提前感谢您!

编辑:

【问题讨论】:

标签: python opencv geometry shape detection


【解决方案1】:

霍夫圆变换生成的大量圆是由于中心检测阈值的低值造成的,在您的情况下为cv2.HoughCircles中的param2

所以尽量增加param2的值,避免误检测。

您还可以调整minRadiusmaxRadius 的值以获得更好的结果。

编辑:

我刚刚尝试了来自here 的示例,并且仅将param2 更改为10minRadius 更改为30maxRadius 更改为50。结果已经足够好了:

上面链接中的示例是用 C++ 编写的,但是您可以比较参数和函数调用的顺序来改进您自己的算法。

【讨论】:

  • 是否可以将霍夫圆变换与实时视频一起使用?
  • @Loanb222 是的,当然有可能。但性能很重要。
  • 当我将它与 pi 相机一起使用时,我不断收到错误消息。我用错误图片更新了我的问题
  • @Loanb222 不幸的是我不太擅长python。您最好为此问题创建一个单独的问题...
  • @Loanb222 首先,您可以在单个图像上改进您的算法,然后才能使用视频对其进行测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 2012-09-16
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多