判断两张图片是否相同

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

import cv2
import hashliba = 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 npa = 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)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部