当前位置:   article > 正文

python比较两张图片是否一样_判断两张图片的内容是否一致【Python 两种方法】...

图片内容对比一致

判断两张图片的内容是否一致【Python 两种方法】

马富天

2019-12-12 17:42:29

39

【摘要】在很多时候需要对相同的图片进行去重处理,这些图片可能是格式不同(png、jpg等),但是图片的内容可能是一样的,我们需要对相同图片进行删除,本文记录一下如何判断两张图片内容是否相同,并用 python 给出具体代码。

首先,我们用一张图片 1.jpg 生成两张图片,一张是 2.jpg,一张是 2.png。由于 png 是无损压缩的,所以 1.jpg = 2.png,而 jpg 保留时有被压缩,因此 1.jpg != 2.jpg。import cv2

img = cv2.imread('1.jpg')

cv2.imwrite('2.jpg',img)

cv2.imwrite('2.png',img)

接下来我们用这三张图片来进行图片内容是否相同的比较。第一种方法是使用 md5() 对图片内容的加密后,判断 md5 值是否相同,完整代码如下:import cv2

import hashlib

img1 = cv2.imread('1.jpg')

img2 = cv2.imread('2.jpg')

img3 = cv2.imread('2.png')

def to_md5(img):

m = hashlib.md5()

m.update(img)

md5_val = m.hexdigest()

return md5_val

img1_md5 = to_md5(img1)

img2_md5 = to_md5(img2)

img3_md5 = to_md5(img3)

if img1_md5 == img2_md5:

print('1.jpg vs 2.jpg yes')

else:

print('1.jpg vs 2.jpg no') # 输出

if img1_md5 == img3_md5:

print('1.jpg vs 2.png yes') # 输出

else:

print('1.jpg vs 2.png no')

第二种方法,采用 numpy 对图片内容进行转换成 np.array,然后通过比较转换后的 numpy 数组是否一致来判断内容是否相同,完整代码如下:import cv2

import numpy as np

img1 = cv2.imread('1.jpg')

img2 = cv2.imread('2.jpg')

img3 = cv2.imread('2.png')

img1_np_arr = np.array(img1)

img2_np_arr = np.array(img2)

img3_np_arr = np.array(img3)

if np.all(img1_np_arr == img2_np_arr):

print('1.jpg vs 2.jpg yes')

else:

print('1.jpg vs 2.jpg no') # 输出

if np.all(img1_np_arr == img3_np_arr):

print('1.jpg vs 2.png yes') # 输出

else:

print('1.jpg vs 2.png no')

很久没有写博客了,这次记录一篇关于图片处理的文章,因为最近工作上跟图片处理有相关的,所以记录一下。注意:将 1.jpg 存储为 2.jpg 时从肉眼上是看不出来是否相同的。

本文比较简单啊,希望大家不要dis哦~

顶0

踩0

我要打赏

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/103795
推荐阅读
相关标签
  

闽ICP备14008679号