【工具】Java计算图片相似度

【工具】Java图片相似度匹配工具

方案一

通过像素点去匹配

/*** * @param file1Url   图片url* @param file2Url   图片url* @return*/public static double img相似度Url(String file1Url, String file2Url){InputStream inputStream1 = HttpUtil.createGet(file1Url).execute().bodyStream();InputStream inputStream2 = HttpUtil.createGet(file2Url).execute().bodyStream();BufferedImage image1 = ImgUtil.read(inputStream1);BufferedImage image2 = ImgUtil.read(inputStream2);try {inputStream1.close();} catch (IOException e) {e.printStackTrace();}try {inputStream2.close();} catch (IOException e) {e.printStackTrace();}
//
//        String Base641 = Base64.encode(inputStream1);
//        String Base642 = Base64.encode(inputStream2);
//
//
//        if(StrUtil.equals(Base641, Base642)){
//            return 100;
//        }return WTool.img相似度(image1, image2);}/*** 必须宽高一样* 通过像素点逐个去比对* @param file1* @param file2* @return*/public static double img相似度(BufferedImage file1, BufferedImage file2){int aheight = file1.getHeight();int awidth = file1.getWidth();int bHeight = file2.getHeight();int bWidth = file2.getWidth();if(aheight != bHeight){System.out.println("高度不同");System.out.println(aheight);System.out.println(bHeight);return 0;}if(awidth != bWidth){System.out.println("宽度不同");System.out.println(awidth);System.out.println(bWidth);return 0;}int 不相同点 = 0;int sum = aheight * bWidth;for (int i = 0; i < aheight; i++) {for (int i1 = 0; i1 < bWidth; i1++) {int rgba = file1.getRGB(i1, i);int rgbb = file2.getRGB(i1, i);if(rgba != rgbb){不相同点++;}}}BigDecimal 不相同点Big  = new BigDecimal(不相同点);BigDecimal sumBig  = new BigDecimal(sum);BigDecimal big100  = new BigDecimal(100);BigDecimal 相似度Big = big100.subtract(不相同点Big.divide(sumBig, MathContext.DECIMAL32).multiply(new BigDecimal(100)));int 相似度 = 相似度Big.intValue();log.info("共:{}, 不相同点:{}, 相似度:{}%", sum, 不相同点, 相似度);file1.flush();file2.flush();return 相似度Big.doubleValue();}

依赖

        <!--hutool工具集--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.22</version></dependency>

加强优化方案

1 加载两张待比较的图片;
2 将图片转换为灰度图像;
3 对灰度图像进行降噪处理;
4 提取图像特征,例如使用SIFT算法提取关键点和描述子;
4 计算图像相似度,比较两张图片的特征数据;
5 根据相似度的结果进行判断,确定两张图片是否相似。

其他方案

一个常用的库是OpenCV(Open Source Computer Vision Library)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/140505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity中Shader光照探针的支持

文章目录 前言一、光照探针用在哪怎么用1、光照探针的应用场景2、我们按照以上条件&#xff0c;在Unity中搭建一个相同的环境3、创建光照探针 二、在我们自己的Shader中&#xff0c;实现支持光照探针1、使用常用的 cginc2、在 v2f 中&#xff0c;准备如下变量3、在顶点着色器中…

macOS文本编辑器 BBEdit 最新 for mac

BBEdit是一款功能强大的文本编辑器&#xff0c;适用于Mac操作系统。它由Bare Bones Software开发&#xff0c;旨在为开发者和写作人员提供专业级的文本编辑工具。 以下是BBEdit的一些主要特点和功能&#xff1a; 多语言支持&#xff1a;BBEdit支持多种编程语言和标记语言&…

ZYNQ PS端的Cache问题

Zynq Cache问题的解决方法 - Kevin_HeYongyuan - 博客园 (cnblogs.com) zynq双核AMP实验之cpu1唤醒代码_xil_settlbattributes-CSDN博客 内存与cache一致性问题_ddr cache一致性-CSDN博客 使用Xil_SetTlbAttributes(0xFFFF0000,0x14de2);可以禁用掉0x1F00 0000区域的Cache&…

负债1320万美元的【思宏集团/Neo-Concep】申请900万美元纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于香港的思宏集团Neo-Concept International Group Holdings Limited(简称&#xff1a;思宏集团&#xff09;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c…

【解刊】IEEE(trans),中科院2区,顶刊,CCF-A类,圈外人别想投?

计算机类 • 好刊解读 今天小编带来IEEE旗下计算机领域好刊的解读&#xff0c;如有相关领域作者有意向投稿&#xff0c;可作为重点关注&#xff01;后文有真实发表案例&#xff0c;供您投稿参考~ 01 期刊简介 IEEE Transactions on Computers ☑️出版社&#xff1a;IEEE …

layui 表格(table)合计 取整数

第一步 开启合计行 是否开启合计行区域 table.render({elem: #myTable, url: ../baidui/, page: true, cellMinWidth: 100,totalRow:true,cols: [[ //表头//{ type: checkbox },{ type: checkbox,totalRowText: "合计" },//合计行区域{ field: id, align: center,…

devops步骤 -- jenkins安装

安装的docker-compose ##安装步骤参考&#xff1a; https://editor.csdn.net/md/?articleId133070011 编写docker-compose.yml version: 3 services: # 集合docker_jenkins:user: root # 为了避免一些…

Zookeeper篇---第八篇

系列文章目录 文章目录 系列文章目录一、描述一下 ZAB 协议二、ZAB 和 Paxos 算法的联系与区别?三、ZooKeeper 宕机如何处理?一、描述一下 ZAB 协议 ZAB 协议是 ZooKeeper 自己定义的协议,全名 ZooKeeper 原子广播协议。 ZAB 协议有两种模式:Leader 节点崩溃了如何恢复和消…

稀疏数组如何帮助我们节省内存,提升性能

本文由葡萄城技术团队发布。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 什么是稀疏矩阵 稀疏矩阵是指矩阵中大部分元素为零的矩阵。在实际应用中&#xff0c;很多矩阵都是稀疏的&#xff0c…

RocketMQ 如何保证消息正常【投递】和【消费】

消息整体处理过程&#xff0c;这里我们将消息的整体处理阶段分为3个阶段进行分析&#xff1a;1、Producer发送消息阶段。 2、Broker处理消息阶段。 3、Consumer消费消息阶段。一、Producer发送消息阶段 1、安全机制保障1&#xff0c;发送方式。 1、同步发送 2、异步发送 3、O…

JPA Buddy快速创建update、find、count、delete、exists方法

JPA Buddy快速创建update、find、count、delete、exists方法&#xff0c;JPA默认提供的CrudRepository\JpaRepository提供的方法比较少&#xff0c;一般我们会手写一些方法&#xff0c;这里我们选择通过JPA Buddy快速生成&#xff0c;之前文章中讲到了JPA Buddy原本是IDEA收费插…

《QT从基础到进阶·二十一》QGraphicsView、QGraphicsScene和QGraphicsItem坐标关系和应用

前言&#xff1a; 我们需要先由一个 QGraphicsView&#xff0c;这个是UI显示的地方&#xff0c;也就是装满可见原色的Scene&#xff0c;然后需要一个QGraphicsScene 用来管理所有可见的界面元素&#xff0c;要实现UI功能&#xff0c;我们需要用各种从QGraphicsItem拼装成UI控件…

scDrug:从scRNA-seq到药物反应预测

scRNA-seq技术允许在转录组水平上对数千个细胞进行测量。scRNA-seq正在成为研究肿瘤微环境中细胞成分及其相互作用的重要工具。scRNA-seq也被用于揭示肿瘤微环境模式与临床结果之间的关联&#xff0c;并在复杂组织中剖析药物治疗的细胞特异性效应。scRNA-seq的最新进展推动了疾…

广告业展示服务预约小程序的效果如何

虽然不少人不会与广告业直接接触&#xff0c;但各种形式的广告却是充斥在人们生活中&#xff0c;线下的传单展板、线上的视频、音频、图文等都是广告很好的传播通道&#xff0c;同时广告业能扩展的客户属性也非常广&#xff0c;下到超市小摊&#xff0c;上到企业公司都有大小相…

RHCE第三次作业

网站需求&#xff1a; 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! [rootserver conf.d]# mkdir /www/openlab [rootserver conf.d]# echo welcome to openlab!!! > /www/openlab/index.html [rootserver openlab]# cat /etc/httpd/conf.d/myhos…

从0到0.01入门React | 006.精选 React 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

阿里云国际站服务器如何升级内存容量?

阿里云服务器是阿里云供给的计算服务&#xff0c;它具有高效安稳、可扩展性强等特色&#xff0c;适用于各种应用环境。在运用阿里云服务器的过程中&#xff0c;或许会遇到内存容量缺乏的状况&#xff0c;这时候就需求晋级内存容量。那么&#xff0c;阿里云服务器怎么晋级内存容…

地面沉降监测站可以监测什么?

随着城市化的飞速发展&#xff0c;地面沉降问题日益凸显。为了及时掌握土地沉降情况&#xff0c;确保人们安全&#xff0c;就需要借助地面沉降监测站的力量。 一、实时监测土地沉降 地面沉降监测站的核心功能是实时监测土地沉降。通过高精度GNSS位移监测站和先进的数据分析技术…

【带头学C++】----- 四、动态内存空间申请 ---- 4.1 动态内存分配(补充面试背题)

1.new/delete和malloc、calloc、realloc/free的区别 相同点&#xff1a;&#xff08;都是为了分配动态的申请内存空间和释放空间&#xff09; 动态内存分配&#xff1a;malloc、calloc、realloc和new都是用于在运行时动态分配内存空间的方式。内存管理&#xff1a;它们都涉及…

【rl-agents代码学习】01——总体框架

文章目录 rl-agent Get startInstallationUsageMonitoring 具体代码 学习一下rl-agents的项目结构以及代码实现思路。 source: https://github.com/eleurent/rl-agents rl-agent Get start Installation pip install --user githttps://github.com/eleurent/rl-agentsUsage…