我正在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的圆。我不认为这实际上是有效的检测。有时需要执行数百次才能执行,但是看来我可以通过快速移动相机之类的东西(例如我的手)来触发它。
有任何想法为什么会发生这种情况,也许有人经历过这种情况?
答案 0 :(得分:1)
我在C ++中遇到了一个相同的问题,其中HoughCircles()将为某些图像返回一个列表,其中包含单个[0,0,0]。已发现这是由OpenCV的RemoveOverlaps()方法中的错误引起的,并将在以后的版本(例如3.4.7、4.2.0等)中修复。
如果您需要更多信息,请查看我编写的错误报告: https://github.com/opencv/opencv/issues/14432