OpenCV HoughCircles偶尔返回[0。 0. 0。]

时间:2018-10-26 05:12:59

标签: python opencv

我正在Raspberry Pi上的经过HSV过滤的PiCamera提要上运行HoughCircles(),以检测到粉红色的球。有时,我会得到[[[0. 0. 0.]]]的ndarray结果,它与np.zeros(shape=(1, 1, 3))相同,而不是在相机视图中没有圆形时所期望的None。我看了看文档,但是没有看到为什么它会返回这个的任何细节。我也查看了源代码,但找不到C++ code的Python包装器,这似乎也无济于事。

这是我的函数调用:

circles = cv2.HoughCircles(frame, cv2.HOUGH_GRADIENT, 3, frame.shape[0] / 4, param1=220, param2=110, minRadius=5)

我想知道为什么它会做一些事情,比如识别一个我什至在imshow()上都看不到的小东西(它总是在(0,0)周围是全黑的;什么都没有,但零),那么为什么它总是在(0,0)且半径为0?我提供minRadius=5时看不到如何返回半径为0的圆。我不认为这实际上是有效的检测。有时需要执行数百次才能执行,但是看来我可以通过快速移动相机之类的东西(例如我的手)来触发它。

有任何想法为什么会发生这种情况,也许有人经历过这种情况?

1 个答案:

答案 0 :(得分:1)

我在C ++中遇到了一个相同的问题,其中HoughCircles()将为某些图像返回一个列表,其中包含单个[0,0,0]。已发现这是由OpenCV的RemoveOverlaps()方法中的错误引起的,并将在以后的版本(例如3.4.7、4.2.0等)中修复。

如果您需要更多信息,请查看我编写的错误报告: https://github.com/opencv/opencv/issues/14432