【问题标题】:Detect a colored ball regardless of the light无论光线如何,都能检测到彩球
【发布时间】:2024-04-24 12:05:01
【问题描述】:

无论光照条件如何,我都在尝试检测橙色球。我想指出,在我的算法中,我将 RGB 图像转换为 HSV(应该与亮度无关),但不是在最佳条件下我找不到球。

更新:这是两张光线条件不同的图像。

如果我在第一张图片中找到了球,我在第二张图片中找不到它,反之亦然。

更新:这是使用 HougCircle 的结果

circles = cv2.HoughCircles(img,cv2.cv.CV_HOUGH_GRADIENT,1,100,param1=75,param2=16,minRadius=100,maxRadius=1000)

但是我需要知道球的颜色是什么。有没有一种方法可以找到用 HoughCircles 找到的圆圈的颜色

【问题讨论】:

  • 你的问题是什么?更重要的是,您的问题是什么?
  • 背景是什么?图片中的球有多大?它的移动速度有多快?是否有其他移动物体?你能发一些图片吗?到目前为止你得到了什么代码?
  • 你能在最佳和非最佳条件下显示示例图像吗?
  • 背景是一堵墙,颜色与球不同。没有其他物体可以移动。球在图像中的大小可以变化(它可以靠近或远离相机)。我会尽快发布图片。但是我想精确地手动更改 HSV 范围(在 opencv 方法 cv2.inRange(...) 中)我每次都可以在图像中找到球。我想知道是否有相同的算法可以自动更改它。
  • 你应该尝试标准化图像(例如白平衡)以消除环境光的影响?!?

标签: opencv video-tracking


【解决方案1】:

解决问题的一种方法是使用霍夫变换寻找圆。这种方法是基于观察到球与背景有清晰的边界。

【讨论】:

  • 我试过了,但是当球远离相机时,HoughCircles 给出了错误的输出:它没有找到球。