您的位置:首页 > 编程语言 > Python开发

Python实现图片相似度计算

2020-12-29 20:28 267 查看 https://blog.51cto.com/1506947

图片相似度

_
概述

今天在用一个软件清理手机时,看到了一个比较好的功能:相似图片删除。软件识别出相册中类似的图片,删除相似图片,进而释放手机存储。

上网查了这个功能的基本实现算法,有挺多算法求图片相似度的,常见的有均值哈希算法、差值感知算法、感知哈希算法、单通道直方图等等,网上有具体实现的算法,此处我只演示单通道直方图。

本推文提到的所有图片均拍摄于武汉市。祝福武汉,祝福湖北,祝福中国。





项目总述

导入一个已知图片,计算各个图片与已知图片的相似度,并输出相似度。

具体计算策略为:导入图片、计算图片的直方图、图片归一化处理、利用compareHist()进行比较相似度。

最后打印相似度,然后输出直方图值,其中图像的x轴是指的图片的0~255之间的像素变化,y轴指的是在这0~255像素所占的比列。

_
项目实现

1、导入图片

# 读取函数,用来读取文件夹中的所有函数,输入参数是文件名
def read_directory(directory_name):
for filename in os.listdir(directory_name):
strDic = directory_name + "//" + filename
imageList.append(strDic)

2、图片处理

# 读取函数,用来读取文件夹中的所有函数,输入参数是文件名
def read_directory(directory_name):
for filename in os.listdir(directory_name):
strDic = directory_name + "//" + filename
imageList.append(strDic)

3、打印结果

for i in range(0, len(similar)):
print(similar[i])
lab = 'img' + str(i)
plt.plot(pilex[i], label=lab)
_

结果展示

1、相似度结果

2、相似图片(相似度0.89)

3、直方图展示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: