HoughCircles无法检测到该圆圈

时间:2019-09-01 20:31:24

标签: python opencv hough-transform

我正在使用openCV来检测一些硬币,首先我使用了一些功能来填充硬币区域,以便可以在硬币所在的位置制作一个白色的实心圆圈,然后尝试使用houghCircles来检测白色圆圈,以便将其裁剪以发送到神经网络。但是houghCircle没有检测到任何东西,对此有任何提示吗?

代码如下:

import numpy as np
import cv2


gray = cv2.imread('coin25a2.jpg',0)

color = cv2.imread('coin25a2.jpg',1)

gray_blur = cv2.GaussianBlur(gray, (15,15), 0)
thresh = cv2.adaptiveThreshold(gray_blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11,1)

kernel = np.ones((3, 3), np.uint8)
closing = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel, iterations=7)

circles = cv2.HoughCircles(closing,cv2.HOUGH_GRADIENT,1, 200, 20,30,30, 0)
circles = np.uint16(np.around(circles))

print(circles)
cv2.imshow("a", closing)
cv2.waitKey(0)

circles变量未返回任何有效的(x,y,r)。

closing image

1 个答案:

答案 0 :(得分:3)

  

circles = cv2.HoughCircles(closing,cv2.HOUGH_GRADIENT,1,200,20,30,30,0)   最后一个参数是您要查找的圆的最大半径。我认为您需要在其中放置一个较大的值,而不是0。

一个更好的计划是只使用默认参数,然后再进行调整。

cv2.HoughCircles(image, method, dp, minDist)

,与

相同
cv2.HoughCircles(closing,cv2.HOUGH_GRADIENT,1, 200)