如何在屏幕截图中查找较小图像的屏幕坐标

时间:2014-05-29 23:06:34

标签: ruby image-processing

如何获取屏幕截图中存在的图像的坐标?

我的屏幕截图看起来像这样。 (部分)

progresss bar

我想找出进度指示器的坐标

progress indicator

和播放按钮

play button

我的脚本是用ruby编写的,我正在运行OSX 10.7

是否存在可以做到这一点的任何事情?

如果需要强力搜索,那么最好的语言是什么?

1 个答案:

答案 0 :(得分:0)

如果您知道目标尺寸,请使用暴力攻击 ...

  • 这是非常基本的形状/图案
  • 所以如果知道这个尺寸很容易而且不会太慢......

1. 找到可能的位置

  • 创建控制点以检查按钮的可能位置
  • 他们应该描述你的形象以丢弃大多数无效的诽谤
  • 这样的事情:

control points

  • 红点是控制点
  • 点数越少,越快
  • 但也不太精确......
  • 现在只需浏览整个屏幕并进行计算

    maxdiff = max(|scrpnt(i)-ctrlpnt(i)|)
    avgdiff = sum(|scrpnt(i)-ctrlpnt(i)|) / n
    
  • n - 是控制点的数量(图片中n = 11)

  • i = 0,1,2 ... n-1
  • 如果maxdiff和avgdiff都是< treshold那么这是按钮上的可能位置

2. 测试可能的位置

  • 现在检查可能位置的所有点arrea
  • 如果maxdiff和avgdiff都是< treshold然后这是按钮位置
  • 如果图像足够大,您可以通过首先测试不是所有像素来加快速度
  • 但有一些步骤...例如:
    • 首先使用step = 8px
    • 进行测试
    • 如果通过,则执行步骤= 1px

[注释]

  • 我没有为您的平台编码,所以我不能考虑语言,但任何像素访问都可以
  • 我过去在SE上看到过类似的问题
  • 所以,如果你搜索一下,你可能会找到一些解决方案(尝试模式识别)