用java確定彈出窗口範圍-圖片比較
這兩天受委托寫個確定彈出窗口範圍的小程序,總結下思路。
最開始是想直接調MFC庫,但是馬上被質疑了,java之類的程序很可能隻是內部開啟窗口,無法用MFC抓取,以及到linux環境的話……你在玩人麼?!
然後同事建議抓點,反正環境相對固定,抓點出來,在程序裏直接調用即可。但我覺得太麻煩了。。。窗口越多點越多,最後這寫個程序,抓點時間占一半實在太傻了。
最後做出決定就是用圖片比較來實現。
簡單來說就是 彈出前抓個全屏圖,彈出後再抓個 通過圖片像素對比來實現判斷。
好吧 這方法的確很弱,費時費力還可能誤報,好處是不用抓點自動判定。
具體方法是
先用robot把圖抓下來,轉化為bufferedimage,再調用getRGB()方法變成RGB數組,通過比較RGB值來判定。
考慮到比較速度,我選擇的是對角線比較。
從對角線上選點,直到找到不同點。
為了確定是真的不同點,還取了+10的另一點做參考比較。
從此點向原點掃描以判斷邊界點,並定位左上角錨點。
同樣再找到右下錨點(加10變減10),就完成範圍判斷了。
這裏主要的問題是
1 這個+10點如果跟背景點一致…… 好吧 我失敗了。
2 還是慢
不知道有沒有什麼好方法可以解決。
回頭抓到我那學圖像處理的妹妹問問。
最後更新:2017-04-02 06:52:18
上一篇:
MyEclipse配置JDK類庫的簡易流程
下一篇:
rsync , rsync + ssh, rsync + lsyncd 多種同步方案與比較
日本小哥如何使用深度學習和TensorFlow種黃瓜?
托管數據中心之間的PUE比較(下)
通過Fluentd實時上傳數據到DataHub實踐
《Log4j 2官方文檔》 Configuration Syntax
Coursera Scala 4-7:Lists
magento開發 -- 深入理解Magento第三章 – 布局,塊和模板
Implementing a Highly-Compressed Data Storage
Java包及訪問控製權限--(private/default/protected/public)及命名規範
JS中window.open彈出窗口居中
《循序漸進學Spark 》Spark架構與集群環境