OpenCV:HoughCircles返回无效的圆形参数

时间:2018-04-05 15:05:22

标签: python python-3.x opencv computer-vision

我正在使用" OpenCV版本:3.4.0"使用Python 3.6和Anaconda Navigator上的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()在某些情况下会返回无效数据?该函数不应该返回某种类型的错误代码,或者可能"无"?

1 个答案:

答案 0 :(得分: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]]],所以我认为您可能遇到了与我不同的错误。如果是这样,我建议提交一份有关此问题的新错误报告。

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