「java图像找茬」java屏幕找图
本篇文章给大家谈谈java图像找茬,以及java屏幕找图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java项目里要做一个大家来找茬的游戏,建一个数据库需要哪些字段啊,求大神
- 2、Java 图像识别 数字图像处理 从一张JPG图片中识别出若干黑色小方块
- 3、如何使用Java实现屏幕找图功能
- 4、JAVA关于图像处理问题
- 5、Java实现大家来找茬,怎么实现点击3处不同的坐标后执行相应事件。
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图像找茬的信息别忘了在本站进行查找喔。
发布于:2022-11-26,除非注明,否则均为
原创文章,转载请注明出处。