python - OpenCV HoughCircles 偶尔会返回 [0. 0. 0.]
问题描述
我在HoughCircles()
Raspberry Pi 上运行 HSV 过滤 PiCamera 提要以检测粉红色球。有时我会得到一个与 ndarray[[[0. 0. 0.]]]
相同的结果np.zeros(shape=(1, 1, 3))
,而不是None
在相机视图中没有圆形时的预期结果。我查看了文档,但没有看到任何关于它为什么会返回这个的细节。我还查看了源代码,但找不到C++ 代码的 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
. 我不相信这实际上是一个有效的检测。有时这需要数百次执行才能发生,但似乎我可以通过快速移动相机的某些东西(例如我的手)来触发它。
任何想法为什么会发生这种情况,也许其他人经历过这种情况?
解决方案
我在 C++ 中遇到了一个相同的问题,其中 HoughCircles() 将为某些图像返回一个包含单个 [0,0,0] 的列表。这被发现是由 OpenCV 中的 RemoveOverlaps() 方法中的错误引起的,并将在未来的版本中修复(例如 3.4.7、4.2.0 等)。
如果您想了解更多信息,请查看我写的错误报告: https ://github.com/opencv/opencv/issues/14432
推荐阅读
- java - JasperReports 用相同类型的数据填充新页面
- python - Celery - 在 tasks.py 中导入模型
- node.js - 将任何文档、图像、文本文件转换为 PDF
- ios - 要素图层标记未在 Esri ios SDK 中显示
- sql - Oracle SQL 中的工作负载分布
- c# - 如何在 c# 中使用年龄获取 DateOfBirth?
- sql - 如何将值更新到 SQL Server 中更新语句中的剩余行
- android - 如何删除 JsonObject 的这些“(逗号)?
- java - HTTP post 请求在生产环境中没有响应(与 tomcat 服务器的战争)
- python - Pyodbc + sqlalchemy 超过 2100 个项目失败