閱讀516 返回首頁    go 阿裏雲 go 技術社區[雲棲]


用java確定彈出窗口範圍-圖片比較

這兩天受委托寫個確定彈出窗口範圍的小程序,總結下思路。
最開始是想直接調MFC庫,但是馬上被質疑了,java之類的程序很可能隻是內部開啟窗口,無法用MFC抓取,以及到linux環境的話……你在玩人麼?!
然後同事建議抓點,反正環境相對固定,抓點出來,在程序裏直接調用即可。但我覺得太麻煩了。。。窗口越多點越多,最後這寫個程序,抓點時間占一半實在太傻了。
最後做出決定就是用圖片比較來實現。

簡單來說就是 彈出前抓個全屏圖,彈出後再抓個 通過圖片像素對比來實現判斷。
好吧 這方法的確很弱,費時費力還可能誤報,好處是不用抓點自動判定。
具體方法是
先用robot把圖抓下來,轉化為bufferedimage,再調用getRGB()方法變成RGB數組,通過比較RGB值來判定。
考慮到比較速度,我選擇的是對角線比較。
從對角線上選點,直到找到不同點。
為了確定是真的不同點,還取了+10的另一點做參考比較。
從此點向原點掃描以判斷邊界點,並定位左上角錨點。
同樣再找到右下錨點(加10變減10),就完成範圍判斷了。
這裏主要的問題是
1 這個+10點如果跟背景點一致…… 好吧 我失敗了。
2 還是慢
不知道有沒有什麼好方法可以解決。
回頭抓到我那學圖像處理的妹妹問問。

最後更新:2017-04-02 06:52:18

  上一篇:go MyEclipse配置JDK類庫的簡易流程
  下一篇:go rsync , rsync + ssh, rsync + lsyncd 多種同步方案與比較