【发布时间】:2023-03-30 12:45:01
【问题描述】:
我需要进行快速准确的圆检测,因此我认为使用 OpenCV 的 Hough Circle 将是一个不错的选择。不幸的是,无论我给它的图像有多好,我调整了多少参数,它都拒绝检测图像中的所有圆圈。这是我的输入图像:
我想检测每个圆圈。首先,我通过滤色器运行图像以提取灰色
frame = cv2.imread("new1.JPG")
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_gray = np.array([0, 0, 0], dtype=np.uint8)
upper_gray = np.array([100,100,100], dtype=np.uint8)
mask = cv2.inRange(frame, lower_gray, upper_gray)
res = cv2.bitwise_and(frame,frame, mask= mask)
gray = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 1, 255, cv2.cv.CV_THRESH_BINARY)
这给了我以下阈值,我认为这实际上非常好。
即使有这么好的阈值,圆圈检测充其量也只是平庸。
circles = cv2.HoughCircles(thresh,cv2.cv.CV_HOUGH_GRADIENT,1,20,param1=50,param2=10,minRadius=2,maxRadius=15)
我应该使用另一种技术吗?我的轮廓效果很好,但速度很慢。
【问题讨论】:
标签: python opencv geometry contour