当前位置: 首页 > news >正文

GoFly快速开发框架/Go语言封装的图像相似性比较插件使用说明

说明

图像相似性搜索应用广泛、除了使用搜索引擎搜索类似图片外,像淘宝可以让顾客直接拍照搜索类似的商品信息、应用在商品购物上,也可以应用物体识别比如拍图识花等领域。还有在调研图片鉴权的方案,通过一张图片和图片库中的图片进行比对,来确定这张图片是否侵权,或者退一步讲,图片库中是否包含和这张图片类似。 

本插件比较两图片相似和深度学习应用中的图像识别还不一样,不需要把图像中的物体识别出来,只需能查找相似图片的东西即可。

技术介绍

这里使用感知哈希算法来做,感知哈希算法根据图像的特征生成一个确定的指纹,这些指纹可以用来比较。指纹越接近,说明图片越接近。当要比较两张图片的时候,计算它们的hash值,然后再计算它们的汉明距离即可。

这里直接使用goimagehash库来实现,它提供aHash、dHash、pHash三种算法, aHash基于平均值,pHash基于图像频率,而dHash基于直方图。dhash准确性和aHash(Average Hash algorithm)查不多,但是更快。

比较图片相似方法有很多种,我们根据业务选择合适办法就是最好的,我们这个方法是用一张图去找和它相似的图对应内容,这个场景需要我们能够快速计算,找出相似图片即可,不需要图像识别出具体某个东西(如猫、狗),而且需要识别出具体东西,需要做大量计算,同时也需要消耗很多时间,在查找场景中我们不能让使用客户等待很久,这样体验太差了,所以合适需求场景就是方法。 

插件提供方法

DifferenceHash和AverageHash的准确性差不多, AverageHash非常快,在特定场景下是一个非常好的算法。三个接口计算返回是两张图片之间差异值,值越小说明它们相似性高。

  • Average Hash算法-基于平均值
distance, err := plugin.AverageHash("被对比图片路径", "对比图片路径")
  • Difference hash算法-基于图像频率
distance, err := plugin.DifferenceHash("被对比图片路径", "对比图片路径")
  • perception hash算法-基于直方图
    distance, err := plugin.PerceptionHash("被对比图片路径", "对比图片路径")

接口使用示例

package createcodeimport ("gofly/utils/gf""gofly/utils/plugin"
)// 后端代码模版
type Test struct{}func init() {fpath := Test{}gf.Register(&fpath, fpath)
}
// 测试图片相似性比较-返回差值,值越小相识度越高
func (api *Test) GetImgsml(c *gf.GinCtx) {distance, err := plugin.AverageHash("./resource/static/Imgsml_base.jpg", "./resource/static/Imgsml_do.jpg")if err != nil {gf.Failed().SetMsg(err.Error()).Regin(c)return}gf.Success().SetMsg("测试图片相似性比较,返回差值,值越小相识度越高").SetData(distance).Regin(c)
}

GoFly全栈社区插件市场地址:https://goflys.cn/codedetail?id=58 

相关文章:

GoFly快速开发框架/Go语言封装的图像相似性比较插件使用说明

说明 图像相似性搜索应用广泛、除了使用搜索引擎搜索类似图片外,像淘宝可以让顾客直接拍照搜索类似的商品信息、应用在商品购物上,也可以应用物体识别比如拍图识花等领域。还有在调研图片鉴权的方案,通过一张图片和图片库中的图片进行比对&a…...

【牛客】小白赛101-B--tb的字符串问题

题目传送门 思路&#xff1a;括号匹配板子 反思&#xff1a;我用了模拟打标记的方式但是还是wa了 ac代码 用了栈维护 当栈里面个数到达1个以上的时候就可以判断栈顶是否匹配然后重复出入栈操作 #include<bits/stdc.h> using namespace std; const int N1e63; string…...

企业专用智能云盘 | 帮助企业便捷管控企业文档 | 天锐绿盘云文档安全管理系统

由于当前多数企业内部的办公文件普遍散落于各员工电脑中&#xff0c;导致存在诸多潜在的文档使用风险。为优化团队协作效率&#xff0c;天 锐 绿盘是一款集文档统一管理、高效协同于一体的企业云盘&#xff0c;帮助企业解决文档管理中的诸多难题。 【地址&#xff1a;点击了解天…...

软件工程专业未来发展方向

1. 前端开发&#xff08;Front-end Development&#xff09; 简介&#xff1a; 前端开发者专注于网站和应用程序的用户界面和用户体验设计。他们使用HTML、CSS、JavaScript等基本技术&#xff0c;以及React、Angular、Vue.js等前端框架&#xff0c;来创建互动性强、响应迅速的…...

【204】C++的vector删除重复元素

有些场景下 vector 中会有重复元素&#xff0c;而业务要求 vector 中避免出现重复元素。 我的算法如下&#xff1a; 获取当前 vector 的元素数量&#xff0c;并保存到一个 int 类型变量中。开启一个外部循环&#xff0c;把 vector 从后向前循环&#xff0c;循环范围是最后一个…...

模型案例:| 行李检测模型!

导读 2023年以ChatGPT为代表的大语言模型横空出世&#xff0c;它的出现标志着自然语言处理领域取得了重大突破。它在文本生成、对话系统和语言理解等方面展现出了强大的能力&#xff0c;为人工智能技术的发展开辟了新的可能性。同时&#xff0c;人工智能技术正在进入各种应用领…...

【PostgreSQL】PostgreSQL SQL语句整理:掌握核心技能

在数据库管理的世界里&#xff0c;PostgreSQL以其强大的功能和灵活性而闻名。作为一名数据库开发者或者数据分析师&#xff0c;熟练掌握SQL语句是必不可少的。在本文中&#xff0c;我们将梳理一系列常用的PostgreSQL SQL语句&#xff0c;帮助你更高效地管理你的数据库。 基础操…...

电风扇制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

电风扇正悄然成为制造业数字化转型浪潮中的一颗璀璨新星。通过构建5G智能工厂物联数字孪生平台&#xff0c;电风扇制造业正以前所未有的速度和精度&#xff0c;推进着整个行业的智能化、网络化与个性化发展。5G技术的飞速发展&#xff0c;为制造业带来了前所未有的通信速度和低…...

Zookeeper安装使用教程

# 安装 官网下载安装包 #配置文件 端口默认8080&#xff0c;可能需要更改一下 #启动 cd /Users/lisongsong/software/apache-zookeeper-3.7.2-bin/bin ./zkServer.sh start #查看运行状态 ./zkServer.sh status #停止 ./zkServer.sh stop #启动客户端 ./zkCli.sh ls /...

Linux C# DAY3

作业 1、 #!/bin/bash mkdir -p ~/dir/dir1 mkdir ~/dir/dir2 cp ./* ~/dir/dir1 cp ./*.sh ~/dir/dir2 cd ~/dir/ tar -cvJf dir2.tar.xz ./dir2 mv dir2.tar.xz ~/dir/dir1/ cd ~/dir/dir1/ tar -xvf dir2.tar.xz 2、 #!/bin/bash head -5 /etc/group | tail -1 sudo mkdi…...

Pycharm中虚拟环境依赖路径修改

引言 在pycharm中创建完虚拟环境后&#xff0c;它会自动将同文件夹底下的site_pakages等子文件夹作为该虚拟环境的依赖项。我们可以通过sys.path来查看当前虚拟环境的依赖路径&#xff0c;在这些依赖路径底下的包就可以被import到。但有些情况下&#xff0c;在我们创建了一个虚…...

可视化数据分析收集软件Splunk Enterprise for Mac

Splunk Enterprise for mac 是一款强大的机器数据平台软件&#xff0c;具有以下特点和优势&#xff1a; 软件下载地址 一、功能强大的数据处理能力 专为收集、整理、搜索、分析和监控各种类型或来源的机器数据而设计&#xff0c;能够实时处理大量的机器生成数据&#xff0c;…...

极狐GitLab CI/CD 功能合集(超详细教程)

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…...

ubuntu安装SFML库+QT使用SFML库播放声音

(1)ubuntu安装SFML库 sudo apt-get install libsfml-dev (2)QT使用SFML库播放声音 在.pro文件中添加头文件路径和库文件路径 INCLUDEPATH /usr/include/SFML LIBS /usr/lib/x86_64-linux-gnu/libsfml*.so UI界面中创建一个pushbutton按钮&#xff0c;并且创建槽函数 加载…...

【AI视频】Runway:Gen-2 图文生视频与运动模式详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 &#x1f4af;前言&#x1f4af;仅图片生成视频方法一&#xff1a;通过Midjourney生成图片方法二&#xff1a;通过Runway预览生成图片注意点 &#x1f4af;图加文生成视频方式一&#xff1a;Midjourney…...

GPIO 理解(基本功能、模拟案例)

GPIO GPIO&#xff08;General Purpose Input / Output&#xff09;是通用输入 / 输出端口&#xff0c;简单理解就是它是一个端口&#xff0c;这个端口可以输入或者输出 在一般情况下&#xff0c;GPIO 不能同时输入或输出&#xff0c;即一个端口要么作为输入端口&#xff0c;要…...

LeetCode_sql_day30(1264.页面推荐)

描述 1264.页面推荐 朋友关系列表&#xff1a; Friendship ------------------------ | Column Name | Type | ------------------------ | user1_id | int | | user2_id | int | ------------------------ (user1_id, user2_id) 是这张表具有唯一值的…...

mysql通过binlog做数据恢复

1 介绍 binlog&#xff08;二进制日志&#xff09;在 MySQL 中具有非常重要的作用。它记录了数据库的所有更改操作&#xff0c;主要用于数据恢复、复制和审计等方面。以下是 binlog 的主要作用&#xff1a; 1.数据恢复 binlog 可以用于恢复数据库中的数据。当数据库发生故障时…...

macos清理垃圾桶时提示 “操作无法完成,因为该项目正在使用中” 解决方法 , 强制清理mac废纸篓 方法

在macos中&#xff0c;删除文件后&#xff0c; 在清理垃圾桶时提示 “操作无法完成&#xff0c;因为该项目正在使用中” 出现这个提示&#xff0c;在大多数的情况下是因为数据问题导致&#xff0c;需要通过磁盘管理工具进行修复&#xff0c;修复后才可彻底的清理垃圾桶。 另外…...

vue3 axios ant-design-vue cdn的方式使用

1、vue3 快速上手 | Vue.js <script src"https://unpkg.com/vue3/dist/vue.global.js"></script><div id"app">{{ message }}</div><script>const { createApp, ref } VuecreateApp({setup() {const message ref(Hello …...

鸿蒙如何引入crypto-js

import CryptoJS from ohos/crypto-js 报错。 需要先安装ohom&#xff1a;打开DevEco&#xff0c;点击底部标签组&#xff08;有Run, Build, Log等&#xff09;中的Terminal&#xff0c;在Terminal下执行&#xff1a; ohpm install 提示 install completed in 0s 119ms&…...

133.在 Vue3 中使用 OpenLayers 实现画多边形、任意编辑、遮罩与剪切处理功能

&#x1f3ac; 效果演示截图&#xff08;先睹为快&#xff09; ✨ 功能概览&#xff1a; ✅ 鼠标画任意形状多边形&#xff1b; ✏️ 点击“修改边界”可拖动顶点&#xff1b; &#x1f7e5; 点击“遮罩”后地图除多边形区域外变红&#xff1b; ✂️ 点击“剪切”后仅显示选…...

Flutter 包依赖升级指南:让项目保持最新状态

在 Flutter 开发过程中&#xff0c;依赖项管理是确保项目顺利运行和持续优化的关键环节。依赖项是项目中不可或缺的外部库&#xff0c;它们提供了各种功能&#xff0c;从 UI 组件到数据处理工具&#xff0c;帮助开发者快速构建应用。然而&#xff0c;随着时间的推移&#xff0c…...

thc-ssl-dos:SSL 压力测试的轻量级工具!全参数详细教程!Kali Linux教程!

简介 THC-SSL-DOS 是一款用于验证 SSL 性能的工具。 建立安全的 SSL 连接需要服务器比客户端高 15 倍的处理能力。 THC-SSL-DOS 利用这种不对称特性&#xff0c;通过使服务器过载并使其断网。 此问题影响当今所有 SSL 实现。供应商自 2003 年以来就已意识到这个问题&#x…...

autodl 安装了多个conda虚拟环境 选择合适虚拟环境的语句

1.conda env list 列出所有虚拟环境 可以看到&#xff0c;我有两个虚拟环境&#xff0c;一个是joygen&#xff0c;一个是base conda activate base 或者 conda activate joygen 激活对应的环境。我选择激活 joygen 环境 然后就可以在joygen环境下进行操作了 base环境也是同理…...

RabbitMQ监控:关键技术、技巧与最佳实践

RabbitMQ作为企业级消息中间件的核心组件&#xff0c;其稳定性和性能直接影响分布式系统的可靠性。有效的监控不仅能帮助快速定位问题&#xff0c;还能优化系统资源分配&#xff0c;预防潜在故障。本文基于RabbitMQ官方文档&#xff0c;深入探讨其监控的技术方案、实践技巧及最…...

Golang 配置国内代理

使用 GOPROXY 临时设置 export GOPROXYhttps://goproxy.cn,direct永久设置 go env -w GOPROXYhttps://goproxy.cn,direct再go get下载...

WPF的基础设施:XAML基础语法

XAML基础语法 1 控件声明与属性设置1.1 特性语法&#xff08;Attribute Syntax&#xff09;1.2 属性元素语法&#xff08;Property Element Syntax&#xff09;1.3 特殊值标记扩展 2 x:Name与Name的区别3 注释与代码折叠4 实用技巧集合5 常见错误排查 XAML( Extensible Applic…...

threejs渲染器和前端UI界面

1. three.js Canvas画布布局 学习本节课之前&#xff0c;可以先回顾下第一章节入门部分的6和12两小节关于threejs Canvas画布布局的讲解。 网页上局部特定尺寸&#xff1a;1.6 第一个3D案例—渲染器(opens new window) 全屏&#xff0c;随窗口变化:1.12 Canvas画布布局和全屏…...

VLAN的作用和原理

1. 为什么要有vlan&#xff1f; 分割广播域&#xff0c;避免广播风暴&#xff0c;造成网络资源的浪费 可以灵活的组网&#xff0c;便于管理&#xff0c;同时还有安全加固的功能 2. vlan是怎么实现的&#xff1f;端口的原理&#xff1f; 设置VLAN后&#xff0c;流量之间的转…...