「java图像找茬」java屏幕找图

博主:adminadmin 2022-11-26 01:09:07 60

本篇文章给大家谈谈java图像找茬,以及java屏幕找图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java项目里要做一个大家来找茬的游戏,建一个数据库需要哪些字段啊,求大神

你不是要做单机的么,你要做联网的么?

你还要保存玩家的信息么?

游戏的数据么?

这些用文件保存足矣

Java 图像识别 数字图像处理 从一张JPG图片中识别出若干黑色小方块

你需要关注的主要是这个类:java.awt.image.BufferedImage

可以查阅相关的API。

java图像处理技术在《java核心技术8 下卷》中有比较详细的介绍。

相关技术要求和注意事项:RGB标准、ICC配置特性、

建议如果进行像素识别的话可以选取关键点的识别方式、而且确认像素是否符合要求使用RGB的范围识别而非精确识别。

至于具体的识别操作过程,需要你详细定义开始识别的位置标准(规定的或者识别图像获取)、边界标准、大小(识别块得SIZE)、分组(给识别块确定属性)等

如何使用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关于图像处理问题

读取控制台输入的路径

判断文件是否存在

Y: - 2

N:在命令行输出"Sorry, I cannot find that file."并退出

读取图片

分析图片像素,按要求将多余的像素截掉

创建一个新图片,像素为原图片的1/4大小

合并像素,将4个像素通过给定的条件计算RGB值合并为1个像素

输出图片,路径为原始图片路径,文件名按要求做处理

不知仁兄的水平在啥程度,整个流程如上列出,哪一步不明确的可以追问

Java实现大家来找茬,怎么实现点击3处不同的坐标后执行相应事件。

判断点击坐标就好,简单一点的实现办法,首先两张图差异的地方点坐标存起来,每次点击的时候判断点击的位置是不是在差异点附近,这个算法可以遍历差异点坐标数组,直接计算两点间距离就可以,自己考虑一个允许范围半径,也就是点击点和差异点距离小于这个半径便被认为是点击成功的。

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

The End

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