我正在使用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)。
答案 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)