「java语言屏幕找图」java屏幕截图

博主:adminadmin 2022-12-02 00:10:06 51

今天给各位分享java语言屏幕找图的知识,其中也会对java屏幕截图进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何使用Java实现屏幕找图功能

测试代码

[java] view plain copy

public static void main(String[] args) throws Exception {

findImage4FullScreen(ImageCognition.SIM_ACCURATE_VERY);

}

public static void findImage4FullScreen(int sim) throws Exception {

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

int w = (int) screenSize.getWidth();

int h = 200;

Robot robot = new Robot();

BufferedImage screenImg = robot.createScreenCapture(new Rectangle(0, 0,

w, h));//对屏幕指定范围进行截图,保存到BufferedImage中

OutputStream out = new FileOutputStream("data/images/screen.png");

ImageIO.write(screenImg, "png", out);//将截到的BufferedImage写到本地

InputStream in = new FileInputStream("data/images/search.png");

BufferedImage searchImg = ImageIO.read(in);//将要查找的本地图读到BufferedImage

//图片识别工具类

ImageCognition ic = new ImageCognition();

ListCoordBean list = ic.imageSearch(screenImg, searchImg, sim);

for (CoordBean coordBean : list) {

System.out.println("找到图片,坐标是" + coordBean.getX() + ","

+ coordBean.getY());

//标注找到的图的位置

Graphics g = screenImg.getGraphics();

g.setColor(Color.BLACK);

g.drawRect(coordBean.getX(), coordBean.getY(),

searchImg.getWidth(), searchImg.getHeight());

g.setFont(new Font(null, Font.BOLD, 20));

g.drawString("←找到的图片在这里",

coordBean.getX() + searchImg.getWidth() + 5,

coordBean.getY() + 10 + searchImg.getHeight() / 2);

out = new FileOutputStream("data/images/result.png");

ImageIO.write(screenImg, "png", out);

}

}

额外的类

CoordBean

package cn.xt.imgCongnition;

public class CoordBean {

private int x;

private int y;

/**

* 获取x坐标

*

* @return x坐标

*/

public int getX() {

return x;

}

public void setX(int x) {

this.x = x;

}

/**

* 获取y坐标

*

* @return

*/

public int getY() {

return y;

}

public void setY(int y) {

this.y = y;

}

}

RgbImageComparerBean

package cn.xt.imgCongnition;

/**

* RGB 相关,图片相似度计算时使用

*

*/

public class RgbImageComparerBean {

/****** 颜色值数组,第一纬度为x坐标,第二纬度为y坐标 ******/

private int colorArray[][];

/*** 是否忽略此点,若为true,则不纳入比较的像素行列。 ***/

private boolean ignorePx[][];

/**** 图片的宽高 ****/

private int imgWidth;

private int imgHeight;

// 图片的像素总数

private int pxCount;

/**

* 获取图像的二维数组组成

*

* @return 图像的二维数组

*/

public int[][] getColorArray() {

return colorArray;

}

/**

* 要对比的像素总数,会自动筛选掉不对比的颜色

*

* @param pxCount

*/

public void setPxCount(int pxCount) {

this.pxCount = pxCount;

}

/**

* 设置颜色二维数组

*

* @param colorArray

* 颜色二维数组,一维为x轴,二维为y轴

*/

public void setColorArray(int[][] colorArray) {

this.colorArray = colorArray;

this.imgWidth = this.colorArray.length;

this.imgHeight = this.colorArray[0].length;

this.pxCount = this.imgWidth * this.imgHeight;

}

/**

* 是否忽略此点,若为true,则不纳入像素比较行列。

*

* @return 具体x,y坐标的那个像素点

*/

public boolean[][] getIgnorePx() {

return ignorePx;

}

/**

* 是否忽略此点,若为true,则不纳入像素比较行列。

*

* @param ignorePx

* 具体x,y坐标的那个像素点

*/

public void setIgnorePx(boolean[][] ignorePx) {

this.ignorePx = ignorePx;

}

/**

* 获取图像的宽度

*

* @return 图像宽度

*/

public int getImgWidth() {

return imgWidth;

}

/**

* 获取图像的高度

*

* @return 图像高度

*/

public int getImgHeight() {

return imgHeight;

}

/**

* 获取图像里像素的总数

*

* @return

*/

public int getPxCount() {

return pxCount;

}

}

java 在屏幕给定区域内找图的实现!

根据问题来看,比较复杂,但是可以提供一个思路,因为每个图都是有名称的

因此使用图像识别可能就不必了,但是可以通过相应手段在特定区域内查找某

一文件的名称,查找到后可以返回该文件所在坐标,你可以自己试一试,如果

有什么疑问,可以联系我,一起研究研究

如何用Java Application实现像按键精灵一样的屏幕范围内找图的程序

先获得图片左上角的颜色

去屏幕里,挨个点比较……如果颜色差距在一定范围内,就认定他相等,这样能找到N个点。

获得图片其他点颜色,根据偏移,去和刚刚的N的点位置附近,寻找匹配点

如果有一个点附近的颜色都和图片颜色匹配,那就是图了

如果没有匹配的,那就是没有~

吖……说的很通俗了,不知道能不能实现~我不会JAVA

JAVA找图编程

做一个数组或集合,把所有的图片对象房放进去,用循环查找匹对,在进行判断什么时候运行程序!

java语言屏幕找图的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java屏幕截图、java语言屏幕找图的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-02,除非注明,否则均为首码项目网原创文章,转载请注明出处。