gpt4 book ai didi

Python OpenCV HoughCircles 没有给出好的结果

转载 作者:太空宇宙 更新时间:2023-11-03 21:27:07 27 4
gpt4 key购买 nike

我需要进行快速准确的圆检测,所以我认为使用 OpenCV 的 Hough Circle 是一个不错的选择。不幸的是,无论我给它的图像有多好以及我调整了多少参数,它都拒绝检测图像中的所有圆圈。这是我的输入图像: Original OpenCV image

我想检测每个圆圈。首先,我通过滤色器运行图像以提取灰色

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)

这给了我以下阈值,我认为这实际上非常好。 Threshold image

即使有这么好的阈值,圆检测充其量也只是一般。

circles = cv2.HoughCircles(thresh,cv2.cv.CV_HOUGH_GRADIENT,1,20,param1=50,param2=10,minRadius=2,maxRadius=15) 

Circles detected

我应该使用另一种技术吗?我用轮廓得到了很好的结果,但速度很慢。

最佳答案

在尝试执行 houghCircles 方法之前,您可以尝试执行 cv2.dilate(img, kernel) 来加​​粗线条。

还有一种处理噪声的通用方法是执行 cv2.erode(img, kernel) 来淡化白色,从而去除图像中的小像素。

进一步阅读:http://docs.opencv.org/trunk/doc/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html

内核只是像 np.ones() 这样的矩阵,但您可以尝试各种不同的矩阵,直到获得最有利的结果。

但是,永远不要指望计算机视觉能够 100% 出色地完成工作或快速完成工作。如果你达到了 80%,你就做得很好(当然取决于实际的图像质量,我并不是说在油漆绘制的图像上不可能有 100%)...

关于Python OpenCV HoughCircles 没有给出好的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28521783/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com