测量屏幕上物体大小的简单OpenCV示例

4

跟进我的另一个问题,你们知道在OpenCV中有没有好的示例,带有简单的黑白校准图片和适当的检测算法?

我只想在屏幕上显示一些黑白图像,从远处拍摄该图像的照片,并计算所显示图像的大小,以计算到该屏幕的距离。

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

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

PS:我已经涵盖了屏幕分辨率/dpi部分,因此我知道在我的屏幕上照片的大小。

编辑:

我将使它变得非常简单,我需要:

  1. 一个在图像中容易识别的模式。现在我正在尝试使用棋盘格。制作ARDefender的人使用了这个
  2. 使用OpenCV告诉我图案1)在图片中的确切像素坐标的适当算法。

抱歉,我不明白你的问题 - 你想计算到另一部手机的距离,而这(另一部)手机上有黑白图像? - ArtemStorozhuk
我想展示一张在OpenCV中容易识别的图片(无论是在手机还是屏幕上都不重要),以便我可以计算图片中像素的大小。 (一旦我知道测试图案的确切大小,我就可以轻松地计算它的距离,因为我知道它在厘米中的实际大小) - Bersaelor
1
你想要在不同的照明条件下识别这张图片吗? - ArtemStorozhuk
它应该在不同的角度/照明下容易识别。这就是为什么我认为黑白可能是合适的,因为那样我会有最高的对比度。 - Bersaelor
2个回答

1

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

sample example

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

因此,在我看来,您应该使用颜色各异的图像(如彩虹)。而且您说它应该易于在不同角度识别。这就是为什么圆形是最好的选择。

这就是为什么您的图像应该长这样:

example

因此,检测这种物体的想法如下:

  1. 进行不同颜色分割(蓝色、红色、绿色等)。使用HSV颜色空间。
  2. 在图像上检测特定颜色的圆。
  3. 拥有最多圆的区域似乎是您的对象。

我并没有太考虑颜色...更多的是关注于图案的独特性和高对比度,这样它的大小/边界就可以很容易地测量出来...但是圆形的想法很不错,我会研究一下并再次回复,一旦我有了可行的方案 :) - Bersaelor
@Bersaelor 看起来这个模式在不同的角度下会失败。 - ArtemStorozhuk

0

你只需要从几个已知的距离(1米,2米,3米...)拍摄你的黑白物体的照片,然后对于每个距离检查相应图像中物体的大小。 通过这些数据,你将能够创建一个线性函数,给出像素大小对应的距离(y = ax + b就可以了;),将其转换为你的代码,完成。 干杯


这个问题似乎不在那里。 - ArtemStorozhuk
同意Astor的看法,因为你所写的是我已经知道的,而不是我的问题。 - Bersaelor
-1有点过分了。我并不在意那50个积分赏金。只是想帮忙而已。学会更好地表达自己,把你的问题写清楚,这样每个人都能理解,兄弟。 - CTZStef
投票反对,也被称为“投下负分”,是社区表示哪些问题和答案最无用的方式。 - Bersaelor
非常好,Bersaelor,非常好。我回答了“测量屏幕上物体的大小”。 - CTZStef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接