用于测量屏幕上对象大小的简单OpenCV示例

时间:2012-06-23 15:26:48

标签: image-processing opencv pattern-recognition

跟进my other question,您是否知道OpenCV中的一个很好的例子,使用简单的黑/白校准图片和适当的检测算法?

我只想在屏幕上显示一些B& W-image,从远处拍摄该图像并计算所显示图像的大小,以计算到所述屏幕的距离。

在我再次发明轮子之前,我认为这很容易,可以通过OpenCV中的许多不同方式实现,但我想我会问是否有一种首选方式,可能还有一些示例代码。

(我已经使用haarcascade-xml文件运行了一些面部检测代码)

PS:我已经覆盖了屏幕的分辨率/ dpi部分,所以我知道屏幕上的图片有多大。

编辑:

我会让它变得非常简单,我需要:

  1. 图像中易于识别的图案。现在我正在试验一个棋盘。制作ARDefender的人使用this
  2. 使用OpenCV告诉我图片1)的精确像素坐标的合适算法。

2 个答案:

答案 0 :(得分:1)

嗯,很难说哪种图像最适合识别 - 在不同的照明中,任何颜色都可以被解释为另一种颜色。简单的例子:

sample example

正如您所看到的,两个交通标志都有红色边框,但即使在一个图像上,上方标志边框显然也不是红色。

因此,在我看来,你应该使用具有许多不同颜色的图像(如彩虹)。而且你说它应该在不同的角度容易识别。这就是为什么圆形是最好的原因。

这就是为什么你的形象应该是这样的:

example

因此,检测此类对象的想法如下:

  1. 进行不同的颜色分割(蓝色,红色,绿色等)。为此使用HSV色彩空间。
  2. 检测图像上特定颜色的圆圈。
  3. 圈数最多的区域似乎是你的对象。

答案 1 :(得分:0)

您只需要从几个已知距离(1m,2m,3m,...)拍摄B& W物体的照片,然后对于每个距离检查相应图像中物体的大小。 从这些数据中,您将能够创建一个线性函数,为您提供与像素大小的距离(y = ax + b应该;)),将其转换为您的代码并完成。 干杯