这个其实也可以通过适当的变化,把两张图片的推理,推广到任意两个文件的对比。
场景就是有多张图片,文件名不同,但可能是同一张图片,要把同样的图删除,可以能过循环,一一比对来删除。查找资料显示说hash值一样,文件不一定相同,hash值不一样,文件一定不一样,所以还是有点不太完美,但目前来看是够用。
import cv2import 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 Imageimport numpy as npa = Image.open('a.jpg')b = Image.open('b.jpg')a.sizea.modeb.sizeb.mode#channelaa = np.array(a)channel = aa.shape[-1]#所有像素bb = np.array(b)np.any(aa==bb)#或np.testing.assert_almost_equal(aa,bb)
如果觉得《判断两张图片是否相同》对你有帮助,请点赞、收藏,并留下你的观点哦!