使用OpenCV进行球检测

时间:2014-02-14 04:37:05

标签: c++ opencv image-processing computer-vision

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

1 个答案:

答案 0 :(得分:2)

让我在一个答案中收集所有其他建议:

  1. 使用cv::inRange()获取正确的颜色(More Information on that)。您可能希望事先使用类似RGB Normalization之类的东西,以确保您完成整个球。
  2. 现在你拥有与球相关的所有像素(也许你必须摆脱一些噪音)。检索球中左/右和上/下最远的像素(也就是具有合理大小的连接组件)以获得球的大小。 (如果球不必是圆的你可能想要取更大的值)
  3. 使用图片中现在已知的球大小计算相机的距离。 (你必须事先知道这个计算的“真实”大小;))
  4. 显然还有其他方法(例如使用边缘检测),但这是最容易的。

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