Python实现图片相似度计算

时间:2022-07-23
本文章向大家介绍Python实现图片相似度计算,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

图片相似度

概述

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

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

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

项目总述

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

具体计算策略为:导入图片、计算图片的直方图、图片归一化处理、利用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、直方图展示