加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

OpenCV Python,为什么Hough Circle Transform找不到所有圆圈?

发布时间:2020-12-20 13:49:30 所属栏目:Python 来源:网络整理
导读:我搜索了很长时间可能出错但我并不真正了解参数和预处理的影响 我无法发布图片,但是在一张非常清晰的欧元照片上,该程序识别出一些圈子,而不是其他一些圈子,甚至可以像其他人一样清楚. 这是我的代码: ?‘$’ import cv2 import numpy as np filename = r'C:
我搜索了很长时间可能出错但我并不真正了解参数和预处理的影响
我无法发布图片,但是在一张非常清晰的欧元照片上,该程序识别出一些圈子,而不是其他一些圈子,甚至可以像其他人一样清楚.

这是我的代码:
?‘$’

import cv2
 import numpy as np

 filename = r'C:UsersroselineDesktoppiecefacile.jpg'
 img = cv2.imread(filename)
 output = img.copy()
 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #BGR donnant GRAY


 circles = cv2.HoughCircles(gray,cv2.cv.CV_HOUGH_GRADIENT,1,70,200,100)  


 if circles is not None:
 circles = np.round(circles[0,:]).astype("int") #convertit en entier les données

for (x,y,r) in circles:
    cv2.circle(output,(x,y),r,(0,255,0),4)
    cv2.rectangle(output,(x-2,y-2),(x+2,y+2),128,255),-1)

cv2.imshow("2015_TIPE_LE_DEM",np.hstack([img,output]))

cv2.waitKey(0)

对不起,我希望有人可以帮助我,分享他的知识,我被剥夺了.

解决方法

这看起来像你设置硬币的最小和最大半径是错误的.算法不检测较小的算法,因为它不会查找它们,并且它确实发现了误报,因为您将阈值设置为低,最大半径设置得太高.

查看this Tutorial和the documentation并使用参数min_radius和max_radius(使两者都更小).您可以预先测量硬币的半径(以像素为单位).

如果你仍然获得正面命中,请使用参数param1和param2.如果您想自动进行,请使用互相关.

看到你的灰度图像会很有趣.如果您的真实世界数据像硬币图像一样简单,那么您真的很幸运.在很多时候,最困难的部分是摆脱噪音.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读