python 相似图片 dhash_python 计算 图片的dhash (different hash)

为了解决运营同事在货源照片审核中的重复工作,通过分析需求,确定使用dhash算法来计算图片的hash距离。当距离小于阈值时,认为图片相似。文章介绍了如何安装PIL和dhash库,并提供了使用PIL和ImageMagick计算dhash的代码示例。
摘要由CSDN通过智能技术生成

需求背景

运营的同事提了个需求:货源审核人员每天要审核货源的照片,查看一个照片,检查其是否是以前货源已经使用过的,这个工作机械、高度重复,希望能做个程序自动比对,把可能重复/相似的图片找出来。

需求分析

对这个需求做了分析后,有一下结论:

图片可能是完全一样的,只是格式不同,png,jpeg, gif几种格式

图片可能是相似的,只是经过了放缩、剪裁

图片可能是相似的,经过了简单的涂鸦

图片可能是相似/一样的,但是做了旋转

做这个程序不是要百分百找出重复图片,只需要找出大部分可能重复图片即可大幅度减少重复劳动。

解决办法

使用different hash算法,计算两张图片的hash距离,如果距离小于一个阈值,则认为其相似度太高。

安装PIL

yum install -y python-devel

wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz

tar xvfz Imaging-1.1.7.tar.gz

cd Imaging-1.1.7

找到 setup.py 这个文件,修改下面几行代码(默认TCL_ROOT的设置为NONE,这里要传到系统库的路径才行):

TCL_ROOT = "/usr/lib64/"

JPEG_ROOT = "/usr/lib64/"

ZLIB_ROOT = "/usr/lib64/"

TIFF_ROOT = "/usr/lib64/"

FREETYPE_ROOT = "/usr/lib64/"

LCMS_ROOT = "/usr/lib64/"

执行安装:

python setup.py install

安装dhash

pip install dhash

使用PIL 计算dhash

import dhash

from PIL import Image

image = Image.open('dhash-test.jpg')

row, col = dhash.dhash_row_col(image)

print(dhash.format_hex(row, col))

使用 ImageMagick 计算dhash (需要安装ImageMagick)

import dhash

from wand.image import Image

with Image(filename='dhash-test.jpg') as image:

row, col = dhash.dhash_row_col(image)

print(dhash.format_hex(row, col))

转载至链接:https://my.oschina.net/ez8life/blog/1924986

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值