我正在开发一个与遗留应用程序通信的应用程序。我的应用程序必须能够知道遗留应用程序的状态,并能够阅读遗留应用程序右下角的标记。问题是窗口中的所有信息都呈现为位图图像,因此我无法使用Windows API读取窗口中的文本。
我正在考虑使用OCR来解释窗口中的信息。但我只需要关于窗口右下方4个字符的信息,当我必须定期阅读这些数据时,感觉有点矫枉过正。
它总是相同的字体,但字符可以根据窗口的大小进行缩放。
有没有一种简单快捷的方法可以将位图信息转换为字母?
听到两个小规模和大规模的例子。
我感兴趣的是:
答案 0 :(得分:1)
如果您感兴趣的数据的位置始终相同,那么只需将像素与几个temlpate图像进行比较(如果您知道窗口大小和图像的最终比例甚至可能会生成)即时匹配模板)。这甚至可能非常快,因为例如字符序列足够不同,您可以通过查看单行像素来识别序列。
答案 1 :(得分:1)
如果没有太多不同的字符,则可以创建要搜索的子图像数据库。 例如,您拍摄遗留应用程序的快照,然后围绕“SC”裁剪图像。 然后定期搜索该模板以及您创建的所有其他模板。当你知道 要搜索时,它会更好,更快,这可能就是你的情况。
但是我必须说这种方法对窗口缩放不稳健。但您可以将其强制重新缩放到预定义的维度。
该艺术被称为“屏幕抓取”。 我使用AHK及其功能ImageSearch进行快速开发。 http://www.autohotkey.com/docs/commands/ImageSearch.htm
OCR并不过分,你可以试试GOCR http://jocr.sourceforge.net/。