【发布时间】:2026-01-30 02:00:02
【问题描述】:
我正在尝试使用 OpenCV 检测反映环境的银球:
用黑球,我通过检测圆圈成功做到了:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray,(5,5),0);
gray = cv2.medianBlur(gray,5)
gray = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,3.5)
kernel = np.ones((3,3),np.uint8)
gray = cv2.erode(gray,kernel,iterations = 1)
gray = cv2.dilate(gray,kernel,iterations = 1)
circles = cv2.HoughCircles(gray, cv.CV_HOUGH_GRADIENT, 1, 260, \
param1=30, param2=65, minRadius=0, maxRadius=0)
但是当使用带有银球的程序时,我们没有得到任何结果。
查看程序计算的边缘时,球的边缘非常锋利。但是代码没有识别任何球。
如何提高银球的检出率?我想到了两种方法: - 改进边缘计算 - 使圆形检测接受边缘不清晰的图像 那可能吗?这样做的最佳方式是什么?
非常感谢您的帮助。
【问题讨论】:
-
如果您拥有的背景具有代表性,那么您可能需要尝试检测特定颜色,这将为您提供相当数量的球开始。 1. 转换为 HSV。为您的特定颜色范围使用 InRagnge
-
您的参数是否匹配相同大小的合成圆?您是否尝试过其他边缘检测方法来获得更好的闭合轮廓? (minimal reproducible example)
标签: python opencv hough-transform