首页 > 编程语言 >Python计算两图相似性-直方图

Python计算两图相似性-直方图

时间:2023-12-19 17:55:38浏览次数:35  
标签:__ hist Python image lh 两图 直方图 cp2

1、简介

利用直方图计算图片的相似度时,是按照颜色的全局分布情况来看待的,

无法对局部的色彩进行分析,同一张图片如果转化成为灰度图时,在计算其直方图时差距就更大了。

对于灰度图可以将图片进行等分,然后在计算图片的相似度。

 

2、代码

from PIL import Image

# 将图片转化为RGB
def make_regalur_image(img, size=(64, 64)):
    gray_image = img.resize(size).convert('RGB')
    return gray_image

# 计算直方图
def hist_similar(lh, rh):
    assert len(lh) == len(rh)
    hist = sum(1 - (0 if l == r else float(abs(l - r)) / max(l, r)) for l, r in zip(lh, rh)) / len(lh)
    return hist

# 计算相似度
def calc_similar(li, ri):
    calc_sim = hist_similar(li.histogram(), ri.histogram())
    return calc_sim

if __name__ == '__main__':
    image_cp1 = Image.open('WD1.png')
    image_cp1 = make_regalur_image(image_cp1)
    image_cp2 = Image.open('WD2.png')
    image_cp2 = make_regalur_image(image_cp2)
    print("图片间的相似度为", calc_similar(image_cp1, image_cp2))

 

标签:__,hist,Python,image,lh,两图,直方图,cp2
From: https://www.cnblogs.com/TSmagic/p/17875010.html

相关文章

  • ELK + Python 实现警报
    关于ELK索引特定字段报警的特殊方式:ELK+python脚本。FILEBEAT(日志采集)-->logstash(日志过滤)-->es(日志分类索引)-->kibana(展示)邮件系统的日志比较复杂,包含众多的日志,比如用户登录日志、用户下载附件日志、垃圾邮件垃圾日志等采集大量的数据如何区分那些是有用的信息,比......
  • 深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
    Python中的面向对象编程涉及许多特殊方法,其中__new__和__init__是两个关键的方法。它们分别负责对象的创建和对象的初始化,在对象的生命周期中扮演着不同而又互补的角色。让我们深入探讨这两个方法,了解它们的作用、区别以及如何在实际开发中应用。1. __new__方法当谈到Pyth......
  • 使用XPath进行网页爬取的Python实现
    XPath是一种用于在XML和HTML文档中进行导航和查询的语言。在网页爬取中,XPath可以帮助我们定位和提取特定的网页元素,从而实现数据的抓取和提取。本文将介绍如何使用Python中的XPath库来进行网页爬取。1.安装依赖库:在使用XPath进行网页爬取之前,我们需要安装相关的依赖库。Python中常......
  • Python中使用del删除列表元素的原理解析
    Python是一种功能强大的编程语言,提供了许多方便的操作列表的方法。其中,使用del关键字可以删除列表中的某个元素。本文将解析Python中使用del删除列表元素的原理,帮助您理解其工作原理和使用方法。1.列表是可变对象:在Python中,列表是一种可变对象,即可以在原地修改的对象。与不可变对象......
  • python-bytes型和string型的转换
    https://blog.csdn.net/weixin_43936250/article/details/124410127数据加解密时通常是以bytes形式存储,加解密算法运行前需要先对数据进行处理。以SM4算法示例数据为例,待加密数据为:0123456789abcdeffedcba9876543210,bytes类型则有两种表示方式message1=b'0123456789abcdeffed......
  • skywalking对接python
    1.官网:https://skywalking.apache.org/docs/skywalking-python/next/readme/2.安装pipinstall"apache-skywalking"3.集成到flask,启动服务fromflaskimportFlask,request,render_templatefromupload_file_to_s3importuploads3,get_md5fromskywalkingimp......
  • 腾讯云api-python调用
    https://cloud.tencent.com/document/product/1278/46716#-*-coding:utf-8-*-importhashlib,hmac,json,os,sys,timefromdatetimeimportdatetime#密钥参数#需要设置环境变量TENCENTCLOUD_SECRET_ID,值为示例的AKIDz8krbsJ5yK**********mLPx3EXAMPLEsecret_......
  • python 之 LDAP 用户统一认证登录
    pipinstallldap3#环境安装fromldap3importServer,Connection,SUBTREEldap_host='xx.xx.x.x'#ldap服务器地址ldap_port=389#默认389ldap_admin_user='xx'#ldap管理员账户用户名ldap_admin_password='xxx'#ldap管理员账户密码ldap_base_search......
  • Request+Python微博爬虫实战
    1Request爬虫基础Request爬虫基本步骤:1、构造URL;2、请求数据;3、解析数据;4、保存数据例:爬取豆瓣某图片importrequests#第1步:构造URLurl='https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2624516210.jpg'#第2步:请求数据r=requests.get(url)#第3步:解......
  • python_01_list_structure
    sort&&sortedsort作用于list,返回None,对list本身进行排序sorted作用于list,返回一个排序好的列表,原列表顺序不作处理;(PS:sorted作用于可迭代对象,都生成一个排序好的列表)>>>l=[1,2,3,5,6,7,6,5,4,3,2]>>>l.sort()>>>l[1,2,2,3,3,4,5,5,6,6,7]>>>k=[1,2,......