相關說明:
首先進行一下相關說明。在“jsxyhelu.cnblogs.com/項目實戰派”欄目里面出現的需求、圖片和其他資源,都是我在瀏覽威客網站、論壇等網站的時候通過正規渠道獲得的真實需求。個人覺得比較感興趣,但是由於時間或者工作的沖突自己沒有去接這些項目。但是由於這些需求都很有實現價值,所以過了一段時間,仍然拿出來練一練手,並且實現了核心模塊。希望能夠給瀏覽者一些啟發。如果你認為這些圖片和資源放在這里不合適,請及時聯系,我會及時處理的。此外,我會將核心代碼和技術細節盡可能將清楚,我認為這樣才是最有價值的方式。如果需要原始代碼,也可以和我聯系。
一、原始需求:
獲取屏幕上的數據的方法有多種,其中一種就是直接定下區域位置,不斷對固定位置進行截圖,而后通過圖像識別的方法進行識別。這種方法運用場合比較廣泛,當需要識別的數據不是特別復雜的時候,識別效率也能夠很高。這里我嘗試實現以上功能。
二、軟件設計:
根據軟件需要實現的功能,我選擇采用“csharp編寫界面+opencv編寫核心功能”的模式來解決問題。chsarp方面,主要實現的功能就是“獲取屏幕坐標,每隔一段時間獲取指定區域截圖”的效果;opencv方便主要是對截取的區域進行增強和識別。
通過修改現有的屏幕截屏軟件,csharp方面達到這個目的:
(1)

就為了達到數據測試的目的,編寫能夠自動產生數字走動的窗體。當然這個窗體的效果是比較簡單的效果,實際情況下,可能會出現較為復雜的背景,或者需要識別的字符格式更難識別。

(2)(3)
(4)
然后是識別的界面,這里是修改一個現有的截屏軟件來做的。主要就是調用現有的類庫,並且將其做成動態截獲數據類型。
(5)

具體可以看視頻。
(6)

四、小結反思:
這樣一個程序,思路比較清晰,功能也比較單一,如果遇到合適場合,可能能夠發揮一定的作用。寫錯過程中遇到的主要問題是將tesseract融合進來的時候,遇到了“不明確符號”錯誤;此外,在c#調用c++的dll庫過程中的參數傳遞問題也是一直沒有很好解決的,如果有對這個方面有研究的朋友,非常希望能夠得到指點。
感謝閱讀,希望有所幫助.
2018年11月14更新 根據網友要求,更新代碼下載鏈接
鏈接:https://pan.baidu.com/s/1CafjxY9Ls4XUBTl80nMLHg
提取碼:h69s
提取碼:h69s