2013-05-08 38 views
0

我正在开发与旧应用程序交谈的应用程序。我的应用程序必须能够知道遗留应用程序的状态,并且能够读取遗留应用程序右下角的标志。问题是窗口中的所有信息都以位图图像的形式呈现,所以我无法使用Windows API读取窗口中的文本。将UI的内容解释为图像

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

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

是否有一个简单快捷的方法将位图信息转换为字母?

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

我所感兴趣的:

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

回答

1

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

但是我必须说,这种方法不适用于窗口缩放。但是你可能会强制将其重新缩放到预定义的维度。

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

OCR是不是那种矫枉过正,你可以试试GOCR http://jocr.sourceforge.net/

1

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