【问题标题】:Interpret the content of the UI as a image将 UI 的内容解释为图像
【发布时间】:2013-05-02 09:06:05
【问题描述】:

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

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

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

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

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

我感兴趣的:

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

【问题讨论】:

    标签: c# image image-processing bitmap ocr


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-26
        • 2010-12-12
        • 1970-01-01
        相关资源
        最近更新 更多