2013-05-08 58 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圖像(如果您知道窗口大小和圖像生成的比例,甚至可能會生成匹配的模板)。這可能會非常快,因爲例如字符序列足夠不同,您可以通過查看單行像素來識別序列。