- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java中的图像匹配实现_java实现图像模版匹配 (蜗⽜学院)
package com.woniu.te t;
import j ava.awt.AWTException;
import j ava.awt.Rectangle;
import j ava.awt.Robot;
import j ava.awt.Toolkit;
import j ava.awt.image.BufferedImage;
import j ava.io.File;
import j avax.imageio.ImageIO;
//j ava图像模版匹配
//核⼼思路 :⽤⼀张⼩图⽚,在⼀张⼤图⽚⾥去寻找,并返回该⼩图⽚所在的坐标位置,然后将⿏标移向该处,并实施相应操作。并更据页
⾯的反馈,进⾏相应的判断(断⾔)
// 1.对需要操作的对象进⾏截图,得到⼀张⼩图⽚,并保存。
//2.对当前屏幕进⾏截图,获得⼀张⼤图⽚,保存或放在内存中
//3.利⽤模版匹配,在⼤图⽚中,按像素对⼩图⽚进⾏滑动,找到⼩图⽚所在的位置。
//4.对该坐标位置(X,Y),加上⼩图⽚⾼度的⼀半(H),宽度的⼀般(W),得到该⼩图⽚的中⼼位置,即是我们要操作的坐标(X+W,Y+H)
//5。将⿏标移向该坐标(X,Y),并进⾏相应操作(输⼊,单机,双击,右键等).
//6.继续第⼆轮操作,第三轮操作。直到第N轮。最后进⾏模版匹配,来确认是否存在和预期结果⼀致的⼩图⽚,进⽽实现断⾔。
//由于是基于的像素匹配,所以,如果界⾯风格发⽣变化,可能出现识别不到的情况。
public cla ImageMatch {
public tatic void main(String[] arg ) throw Exception {
ImageMatch im = new ImageMatch();
//BufferedImage bi = im.getScreenShot();
//int[] [] re ult = im.getImageRGB(bi);
//for (int y = 0; y re ult.length; y++) {
//for (int x = 0; x re ult[y].length; x++) {
//Sy tem.out.println(re ult[y] [x]);
//}
//}
Runtime.getRuntime().exec(C:/Window / y tem32/calc.exe);
Thread. leep(3000);
String imageDir = Sy tem.getProperty (u er.dir) + /wincalc/;
int[] target = im.findImage(imageDir + 3.png);
Sy tem.out.println(找到⼀个点 : + target[0] + : + target[1]);
}
// 截图
public BufferedImage getScreenShot() {
BufferedImage bfImage = null;
int captureWidth = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
int captureHeight = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
try {
Robot robot = new Robot();
Rectangle creenRect = new Rectangle(0,0,captureWidth,captureHeight);
bfImage = robot.createScreenCapture( creenRect);
} catch (AWTException e) {
e.printStackTrace();
}
return bfImage;
}
// 获取像素点值
public int[] [] getImageRGB(BufferedImage bfImage) {
int width = bfImage.getWidth();
int height = bfImage.getHeight();
int[] [] re ult = new int[width] [height];
for (int y = 0; y height; y++) {
for (int x =
文档评论(0)