温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java怎么实现图片比对算法

发布时间:2022-04-21 17:10:47 来源:亿速云 阅读:306 作者:zzz 栏目:开发技术

这篇“Java怎么实现图片比对算法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java怎么实现图片比对算法”文章吧。

效果如下:

Java怎么实现图片比对算法Java怎么实现图片比对算法

识别结果:

Java怎么实现图片比对算法

主要代码如下:

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;         }     } }

以上就是关于“Java怎么实现图片比对算法”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI