计算图片相似度

方法一:用structural_similarity

from skimage.metrics import structural_similarity
current_pic = cv2.cvtColor(cv2.imread('test4.jpg'), cv2.COLOR_BGR2GRAY)
current_pic = cv2.resize(current_pic, dsize=(400, 400))
score, _ = structural_similarity(current_pic, brand_pic, full=True)

方法二:将图片缩小到10*10像素,根据每个像素点的值判断相似度。
速度1秒钟20个图片

from PIL import Image

def hash_img(img):  # 计算图片的特征序列
    a = []  # 存储图片的像素
    feature_list = []  # 特征序列
    img = img.resize((10, 10))  # 图片缩放

    for y in range(img.height):
        b = []
        for x in range(img.width):
            pos = x, y
            color_array = img.getpixel(pos)  # 获得像素
            if img.mode == 'P':  # 单通道
                color = color_array
            else:
                color = sum(color_array) / 3  # 灰度化
            b.append(int(color))
        a.append(b)

    for y in range(img.height):
        avg = sum(a[y]) / len(a[y])  # 计算每一行的像素平均值
        for x in range(img.width):
            if a[y][x] >= avg:  # 生成特征序列,如果此点像素大于平均值则为1,反之为0
                feature_list.append(1)
            else:
                feature_list.append(0)
    return feature_list


def similar(hash1, hash2):  # 求相似度
    same_count = sum(1 for a, b in zip(hash1, hash2) if a == b)
    return same_count / len(hash1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值