使用OpenCV进行球检测

Ball detection with OpenCV

本文关键字:检测 OpenCV 使用      更新时间:2023-10-16

我需要在OpenCV中使用低分辨率(320 x 240)图像,并找到一个蓝色或红色的大健身球。球宽 25 英寸,不能保证是完美的圆形。我尝试使用带有Canny阈值图像的HoughCircles。我没有成功。我做错了什么,以像素为单位获取球的大小及其位置的最佳方法是什么?它会让我计算出它离相机有多远之类的东西!

让我在一个

答案中收集所有其他建议:

  1. 使用 cv::inRange() 获得正确的颜色(更多信息)。您可能希望事先使用RGB规范化之类的东西来确保检索完整的球。
  2. 现在你拥有了与球相关的所有像素(也许还有一些你必须摆脱的噪音)。检索球中左/右和顶部/底部相距最远的像素(也称为具有合理大小的连接组件)以获得球的大小。(如果球不必是圆形的,您可能希望取更大的值)
  3. 使用图片中现在已知的球大小计算与相机的距离。(显然,您必须事先知道此计算的"实际"大小;))

显然还有其他方法(例如使用边缘检测),但这是最简单的方法。

如果您发布示例图片,则更容易给您答案。