龙空技术网

Python-用余弦相似度求图片的相似度

之乎者矣 878

前言:

眼前朋友们对“余弦相似度算法 应用”大致比较重视,你们都需要学习一些“余弦相似度算法 应用”的相关知识。那么小编在网摘上网罗了一些对于“余弦相似度算法 应用””的相关知识,希望你们能喜欢,大家快快来了解一下吧!

求以下2张图片的相似度(图片来源懂车帝):

from  PIL import  Imageimport numpy as npdef get_thum(image, size=(64, 64), greyscale=False):    # 利用image对图像大小重新设置, Image.ANTIALIAS为高质量的    image = image.resize(size, Image.ANTIALIAS)    if greyscale:        # 将图片转换为L模式,其为灰度图,其每个像素用8个bit表示        image = image.convert('L')    return image# 计算图片的余弦距离def image_similarity_vectors_via_numpy(image1, image2):    image1 = get_thum(image1)    image2 = get_thum(image2)    images = [image1, image2]    vectors = []    norms = []    for image in images:        vector = []        for pixel_tuple in image.getdata():            vector.append(np.average(pixel_tuple))        vectors.append(vector)        # linalg=linear(线性)+algebra(代数),norm则表示范数        # 求图片的范数??        norms.append(np.linalg.norm(vector, 2))    a, b = vectors    a_norm, b_norm = norms    # dot返回的是点积,对二维数组(矩阵)进行计算    res = np.dot(a / a_norm, b / b_norm)    return resif __name__ == '__main__':    image1=Image.open(r"C:\Users\yellow\Desktop\sam\t1.png")    image2 = Image.open(r"C:\Users\yellow\Desktop\sam\t2.png")    result=image_similarity_vectors_via_numpy(image1,image2)    print(result)

标签: #余弦相似度算法 应用