将UI的内容解释为图像

时间:2013-05-08 08:01:04

标签: c# image image-processing bitmap ocr

我正在开发一个与遗留应用程序通信的应用程序。我的应用程序必须能够知道遗留应用程序的状态,并能够阅读遗留应用程序右下角的标记。问题是窗口中的所有信息都呈现为位图图像,因此我无法使用Windows API读取窗口中的文本。

我正在考虑使用OCR来解释窗口中的信息。但我只需要关于窗口右下方4个字符的信息,当我必须定期阅读这些数据时,感觉有点矫枉过正。

它总是相同的字体,但字符可以根据窗口的大小进行缩放。

有没有一种简单快捷的方法可以将位图信息转换为字母?

听到两个小规模和大规模的例子。 small scale big scale

我感兴趣的是:

  • 前两个字符(可以是AF,NP,CH,OF,LI,CO,SC或WI)
  • 数字(可以是1-5)
  • 箭头的方向(可以是右,上,左或下)
  • 字符的颜色(可以是16种不同的颜色)
  • (箭头后面的两个数字是鼠标的x和y,并不感兴趣)

2 个答案:

答案 0 :(得分:1)

如果您感兴趣的数据的位置始终相同,那么只需将像素与几个temlpate图像进行比较(如果您知道窗口大小和图像的最终比例甚至可能会生成)即时匹配模板)。这甚至可能非常快,因为例如字符序列足够不同,您可以通过查看单行像素来识别序列。

答案 1 :(得分:1)

如果没有太多不同的字符,则可以创建要搜索的子图像数据库。 例如,您拍摄遗留应用程序的快照,然后围绕“SC”裁剪图像。 然后定期搜索该模板以及您创建的所有其他模板。当你知道 要搜索时,它会更好,更快,这可能就是你的情况。

但是我必须说这种方法对窗口缩放不稳健。但您可以将其强制重新缩放到预定义的维度。

该艺术被称为“屏幕抓取”。 我使用AHK及其功能ImageSearch进行快速开发。 http://www.autohotkey.com/docs/commands/ImageSearch.htm

OCR并不过分,你可以试试GOCR http://jocr.sourceforge.net/