用java确定弹出窗口范围-图片比较-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

用java确定弹出窗口范围-图片比较

简介: 这两天受委托写个确定弹出窗口范围的小程序,总结下思路。 最开始是想直接调MFC库,但是马上被质疑了,java之类的程序很可能只是内部开启窗口,无法用MFC抓取,以及到linux环境的话……你在玩人么?! 然后同事建议抓点,反正环境相对固定,抓点出来,在程序里直接调用即可。但我觉得太麻烦了。。。窗口越多点越多,最后这写个程序,抓点时间占一半实在太傻了。 最后做出决定就是用图片比较来

这两天受委托写个确定弹出窗口范围的小程序,总结下思路。
最开始是想直接调MFC库,但是马上被质疑了,java之类的程序很可能只是内部开启窗口,无法用MFC抓取,以及到linux环境的话……你在玩人么?!
然后同事建议抓点,反正环境相对固定,抓点出来,在程序里直接调用即可。但我觉得太麻烦了。。。窗口越多点越多,最后这写个程序,抓点时间占一半实在太傻了。
最后做出决定就是用图片比较来实现。

简单来说就是 弹出前抓个全屏图,弹出后再抓个 通过图片像素对比来实现判断。
好吧 这方法的确很弱,费时费力还可能误报,好处是不用抓点自动判定。
具体方法是
先用robot把图抓下来,转化为bufferedimage,再调用getRGB()方法变成RGB数组,通过比较RGB值来判定。
考虑到比较速度,我选择的是对角线比较。
从对角线上选点,直到找到不同点。
为了确定是真的不同点,还取了+10的另一点做参考比较。
从此点向原点扫描以判断边界点,并定位左上角锚点。
同样再找到右下锚点(加10变减10),就完成范围判断了。
这里主要的问题是
1 这个+10点如果跟背景点一致…… 好吧 我失败了。
2 还是慢
不知道有没有什么好方法可以解决。
回头抓到我那学图像处理的妹妹问问。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: