我在 Raspberry Pi 上的 HSV 过滤 PiCamera 馈送上运行 HoughCircles()
以检测粉红色球。偶尔我会得到 [[[0 的 ndarray 结果。 0. 0.]]]
与 np.zeros(shape=(1, 1, 3))
相同,而不是预期的 None
当相机 View 中没有圆形时。我查看了文档,但没有看到任何关于它为什么会返回这个的细节。我还查看了源代码,但找不到 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 的圆。我不相信这实际上是一个有效的检测。有时需要执行数百次才能发生这种情况,但似乎我可以通过快速移动相机旁的某物(例如我的手)来触发它。
知道为什么会发生这种情况,也许其他人已经经历过这种情况?
最佳答案
我在 C++ 中遇到了一个相同的问题,其中 HoughCircles() 会为某些图像返回一个包含单个 [0,0,0] 的列表。发现这是由 OpenCV 中的 RemoveOverlaps() 方法中的错误引起的,将在未来的版本(例如 3.4.7、4.2.0 等)中修复。
如果您想了解更多信息,请查看我编写的错误报告: https://github.com/opencv/opencv/issues/14432
关于python - OpenCV HoughCircles 偶尔会返回 [0. 0. 0.],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53001840/