博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA比较两张图相似度
阅读量:4582 次
发布时间:2019-06-09

本文共 1481 字,大约阅读时间需要 4 分钟。

代码:

package com.uiwho.com;import javax.imageio.*;import java.awt.image.*; import java.awt.*;//Color import java.io.*; public class PhotoDigest { public static void main(String[] args) throws Exception { float percent = compare(getData("C:/Users/Administrator/Desktop/1.jpg"), getData("C:/Users/Administrator/Desktop/2.png")); 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; } } }

转载于:https://www.cnblogs.com/super-chao/p/10734797.html

你可能感兴趣的文章
LightOJ 1007 - Mathematically Hard
查看>>
前端和算法实现:给网站上加上自己的水印(简单+复杂)
查看>>
react-native学习(RN)--之Window环境下搭建环境配置,以及初始化建立react-native项目,(真机和模拟器运行的相关错误解决办法,android打包报错)...
查看>>
WPF路由事件学习(一)
查看>>
特殊字符导致jquery-mobile 挂起(firefox控制台报错 malformed URI sequence)
查看>>
Java3-1
查看>>
系统分析与设计 作业一
查看>>
大数据入门---------------------Java部分开始
查看>>
Java中的逆变与协变
查看>>
ASP.NET站点
查看>>
mvc
查看>>
[leetcode]Map-560. Subarray Sum Equals K
查看>>
LeetCode No.6 ZigZag Conversion
查看>>
CSS中position为relative时的特性
查看>>
javascript类式继承最优版
查看>>
opencv
查看>>
将相关数据拼成所需JSON数据
查看>>
第一章
查看>>
python全栈-Day 13
查看>>
二十五、侧边栏(charm)
查看>>