OpenCV:HoughCircles返回无效的圆参数

问题描述 投票:2回答:1

我在Anaconda Navigator上使用Python 3.6的“OpenCV版本:3.4.0”和Spyder IDE(Spyder 3.2.4)。

当我用这些参数调用HoughCircles()时,它返回无效的圆数据:

=====================================================================
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1.8, 30, 10, 310,minRadius = 35, maxRadius = 255)

len(circles): 4
circles: [[10.][ 0.][ 0.][ 0.]]
=====================================================================

当我用这些参数调用HoughCircles()时,它返回有效的圆数据:

=====================================================================
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1.8, 30, 10, 300,minRadius = 35, maxRadius = 255)

len(circles): 1
circles: [[[319.5 571.5 251. ]]]
=====================================================================

为什么HoughCircles()在某些情况下会返回无效数据?该函数不应该返回某种类型的错误代码,或者可能是“无”?

python python-3.x opencv computer-vision
1个回答
0
投票

我在C ++中碰到了类似的东西,其中HoughCircles()将为某些图像返回一个包含单个[0,0,0]的列表。根本原因是OpenCV中的RemoveOverlaps()方法中的错误。这是我写的错误报告: https://github.com/opencv/opencv/issues/14432

同样的问题似乎也会影响Python,如本问题所述: OpenCV HoughCircles occasionally returning [0. 0. 0.]

您可以尝试手动构建一个版本的OpenCV,并应用补丁以查看是否有帮助(或将来的版本如3.4.7或4.2.0)。但是,由于你得到[[10] [0] [0] [0]]而不是[[[0 0 0]]],我认为你可能遇到了一个与我不同的错误。如果是这样,我建议提交一份关于它的新错误报告。

最后,每当发布有关计算机视觉的信息时,最好包含您正在测试的图像文件,因为没有它就无法重现问题。

© www.soinside.com 2019 - 2024. All rights reserved.