用md5值识别相似图片 python

我使用感知哈希算法对多张图片进行了测试,以上链接中提到差值哈希的速度更快、准确度更高,因此直接用的差值哈希(dhash),但是并未有很好的效果。感知哈希对图片进行缩放,提取特征,不考虑过多的局部特征,可能这也是它不够准确的原因吧。考虑寻找其他方法。

我尝试将汉明距离为6及以下的认为是相似图片,相似的图片基本上能找到,但是还有一些不同的图片也会被认为相似,设置汉明距离为5时,相似的图片也不再能找到。

贴出代码,代码参考上述链接。

import os
import numpy as np
import cv2

class XHash:
    '''
    感知 Hash 算法
    '''

    def __init__(self, image_path, hash_type):
        self.image_path = image_path
        self.hash_size = 8
        self.type = hash_type
        if self.type == 'aHash':
            self.hash = self.__aHash()
        elif self.type == 'dHash':
            self.hash = self.__dHash()

    def __get_gray(self, img):
        '''
        读取 RGB 图片 并转换为灰度图
        '''
        # 由于 cv2.imread 无法识别中文路径,所以使用 plt.imread
        return cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转换为灰度图
        
    def __difference(self):
        '''
        比较左右像素的差异
        '''
        #img = plt.imread(self.image_path)
        img = cv2.imdecode(np.fromfile(self.image_path,dtype=np.uint8),cv2.IMREAD_COLOR) # 解决无法取得中文路径问题
        resize_img = cv2.resize(img, (self.hash_size+1, self.hash_size)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值