516
技术社区[云栖]
用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架构与集群环境