python - OpenCV:HoughCircles 返回无效的圆参数

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

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

最佳答案

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

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

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

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

关于python - OpenCV:HoughCircles 返回无效的圆参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49675692/

相关文章:

c++ - 在线程之间解析 OpenCV 帧

python - 函数 imshow 断言失败 : size. width>0 && size.height>0

python - 在 python 中提供默认值的最惯用方法?

python - 当我在 MongoDB 中进行地理空间查询时,如何返回距所需点的距离?

python - 字符串格式 : Columns in line

Python:按理解访问列表

python - 在等待线程完成时卡住/挂起 tkinter GUI

python - 没有模型和数据库的Django元素

python - 转换格式为 mm :ss to a time format pandas 的对象数据类型列

opencv - 如何将OpenCV中的3D点转换为 Eigen 表示?