您的位置:首页 > 编程语言 > Java开发

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

2011-12-25 07:32 162 查看
这两天受委托写个确定弹出窗口范围的小程序,总结下思路。

最开始是想直接调MFC库,但是马上被质疑了,java之类的程序很可能只是内部开启窗口,无法用MFC抓取,以及到linux环境的话……你在玩人么?!

然后同事建议抓点,反正环境相对固定,抓点出来,在程序里直接调用即可。但我觉得太麻烦了。。。窗口越多点越多,最后这写个程序,抓点时间占一半实在太傻了。

最后做出决定就是用图片比较来实现。

简单来说就是 弹出前抓个全屏图,弹出后再抓个 通过图片像素对比来实现判断。

好吧 这方法的确很弱,费时费力还可能误报,好处是不用抓点自动判定。

具体方法是

先用robot把图抓下来,转化为bufferedimage,再调用getRGB()方法变成RGB数组,通过比较RGB值来判定。

考虑到比较速度,我选择的是对角线比较。

从对角线上选点,直到找到不同点。

为了确定是真的不同点,还取了+10的另一点做参考比较。

从此点向原点扫描以判断边界点,并定位左上角锚点。

同样再找到右下锚点(加10变减10),就完成范围判断了。

这里主要的问题是

1 这个+10点如果跟背景点一致…… 好吧 我失败了。

2 还是慢

不知道有没有什么好方法可以解决。

回头抓到我那学图像处理的妹妹问问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: