判断两张图片是否相同

这个其实也可以通过适当的变化,把两张图片的推理,推广到任意两个文件的对比。
场景就是有多张图片,文件名不同,但可能是同一张图片,要把同样的图删除,可以能过循环,一一比对来删除。查找资料显示说hash值一样,文件不一定相同,hash值不一样,文件一定不一样,所以还是有点不太完美,但目前来看是够用。

import cv2
import hashlib

 a = cv2.imread('a.jpg')
 b = cv2.imread('b.jpg')
ah = hashlib.md5(a).hexdigest()
bh = hashlib.md5(b).hexdigest()

如果ah和bh是同一张图,那么,就可以删除了。
提供一些其它判断:

  • 尽寸是否相同
  • 后缀是否相同
  • 通道数是否一致
  • 每个像素是否全相同
    以上前两点,用PIL来处理速度很快,后两点还要用numpy,可能速度慢。
from PIL import Image
import numpy as np

a = Image.open('a.jpg')
b = Image.open('b.jpg')
a.size
a.mode
b.size
b.mode
#channel
aa = np.array(a)
channel = aa.shape[-1]
#所有像素
bb = np.array(b)
np.any(aa==bb)
#或
np.testing.assert_almost_equal(aa,bb)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值