0

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

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

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

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

听到的是两个规模较小和规模较大的例子。 小规模 大规模

我感兴趣的是:

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

2 回答 2

1

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

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

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

OCR 并没有那么矫枉过正,你可以试试 GOCR http://jocr.sourceforge.net/

于 2013-05-08T11:28:42.893 回答
1

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

于 2013-05-08T08:44:11.957 回答