千家信息网

Java怎么实现图片比对算法

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇"Java怎么实现图片比对算法"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Ja
千家信息网最后更新 2024年11月30日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怎么实现图片比对算法"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0