繁体   English   中英

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

[英]OpenCV Python, why Hough Circle Transform doesn't find all circles ?

我搜索了很长时间,这可能是错误的,但是我不太了解参数和预处理的影响,我无法发布图像,但是在一张非常清晰的欧元照片上,程序可以识别出一些圆圈,而没有发现其他圆圈,甚至是夸张的和其他人一样清楚。

这是我的代码:“ $”

 import cv2
 import numpy as np

 filename = r'C:\Users\roseline\Desktop\piecefacile.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), (0,128, 255), -1)

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

cv2.waitKey(0)

对不起,麻烦,我希望有人能帮助我,并分享我被剥夺的知识。

看来您将硬币的最小和最大半径设置错误。 该算法不会检测到较小的,因为它不会寻找它们,并且会发现错误的肯定命中,因为您将阈值设置为较低,而最大半径则设置为太大。

查看本教程文档,并使用参数min_radius和max_radius(将两者都变小)。 您可以预先测量硬币的半径(以像素为单位)。

如果您仍然获得好评,请使用参数param1和param2。 如果您想自动化,请使用互相关。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM