博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java版两图对比相似度
阅读量:5749 次
发布时间:2019-06-18

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

  hot3.png

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{

        String Ypath = "C:/Users/Administrator/Desktop/1.jpg";

        String Opath ="C:/Users/Administrator/Desktop/2.jpg";

        float percent = compare(getData(Ypath),getData(Opath));

        System.out.println("两张图片的相似度为:"+percent+"%");

    }

    public static int[] getData(String name)throws Exception{

        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"));

        //使用RGB颜色对比~

        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;

    }

    public static float compare(int[] s,int[] t){

        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;

    }

}

转载于:https://my.oschina.net/MStart/blog/708667

你可能感兴趣的文章
基于Flask-Angular的项目组网架构与部署
查看>>
一张图道尽程序员的出路
查看>>
redis 常用命令
查看>>
LVS+Keepalived高可用负载均衡集群架构
查看>>
烂泥:kvm安装windows系统蓝屏
查看>>
iPhone开发面试题--葵花宝典
查看>>
EdbMails Convert EDB to PST
查看>>
POJ 2184
查看>>
存储过程简单实例
查看>>
大话 程序猿 眼里的 接口
查看>>
struts2用了哪几种模式
查看>>
replace函数结合正则表达式实现转化成驼峰与转化成连接字符串的方法
查看>>
ubuntu 初学常用命令
查看>>
WCF客户端与服务端通信简单入门教程
查看>>
判断是否含有中文
查看>>
MyEclipse Web开发教程:XML & XML架构(一)
查看>>
linux文件权限与属性的更改
查看>>
Jquery绑定事件
查看>>
android 资源种类及使用
查看>>
Explorer程序出错
查看>>