Java怎么实现图片比对算法
作者:慢热型
时间:2023-04-27
浏览:0
效果如下:识别结果:主要代码如下:importjavax.imageio.*;importjava.awt.image.*;importjava.awt.*;importjava.io.*;publicclassPhotoDigest{publicstaticvoidmain(String[]args)throwsException{floatpercent=compare(getData("/Users/sun/Downloads/1.jpg"),getData("/Users/sun/Download
本文目录
效果如下:


识别结果:

主要代码如下:
import javax.imageio.*;
import java.awt.image.*;
import java.awt.*;
import java.io.*;
public class PhotoDigest {
public static void main(String[] args) throws Exception {
float percent = compare(getData("/Users/sun/Downloads/1.jpg"),
getData("/Users/sun/Downloads/3.jpg"));
if (percent == 0) {
System.out.println("无法比较");
} else {
System.out.println("两张图片的相似度为:" + percent + "%");
}
}
public static int[] getData(String name) {
try {
BufferedImage img = ImageIO.read(new File(name));
BufferedImage slt = new BufferedImage(100, 100,
BufferedImage.TYPE_INT_RGB);
slt.getGraphics().drawImage(img, 0, 0, 100, 100, null);
// ImageIO.write(slt,"jpeg",new File("slt.jpg"));
int[] data = new int[256];
for (int x = 0; x < slt.getWidth(); x++) {
for (int y = 0; y < slt.getHeight(); y++) {
int rgb = slt.getRGB(x, y);
Color myColor = new Color(rgb);
int r = myColor.getRed();
int g = myColor.getGreen();
int b = myColor.getBlue();
data[(r + g + b) / 3]++;
}
}
// data 就是所谓图形学当中的直方图的概念
return data;
} catch (Exception exception) {
System.out.println("有文件没有找到,请检查文件是否存在或路径是否正确");
return null;
}
}
public static float compare(int[] s, int[] t) {
try {
float result = 0F;
for (int i = 0; i < 256; i++) {
int abs = Math.abs(s[i] - t[i]);
int max = Math.max(s[i], t[i]);
result += (1 - ((float) abs / (max == 0 ? 1 : max)));
}
return (result / 256) * 100;
} catch (Exception exception) {
return 0;
}
}
}
作者最新文章
QQ邮箱地址书写时括号能不能添加
2026-10-27 23:17
搭载 RTX 5070 12GB 显卡 联想 Legion 5i 15IAX11 游戏本海外发布
2026-10-26 16:26
blender安装教程中文版详细步骤与汉化设置指南
2026-10-20 18:28
SQL分组统计查询:GROUP BY与HAVING子句用法示例
2026-10-17 13:12
漫蛙官网线路更新提醒了吗
2026-10-13 13:42
上一篇:
Java开发反射机制实例代码分析
下一篇:
Python数据可视化常用的工具有哪些?
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































