zoukankan      html  css  js  c++  java
  • JAVA比较两张图相似度

    代码:

    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;
            }
        }
    }
  • 相关阅读:
    [BUUCTF]PWN14——not_the_same_3dsctf_2016
    flask cookie
    关于cookie和session
    mysql修改表操作
    MySQL 增删改查
    mysql数据类型
    python读写mysql
    聚合查询
    条件查询
    排序
  • 原文地址:https://www.cnblogs.com/super-chao/p/10734797.html
Copyright © 2011-2022 走看看