1 回答
TA贡献1833条经验 获得超4个赞
您遇到的现象是数据压缩没有 100% 严格定义的结果。PNG 文件使用DEFLATE压缩,它要求给定的压缩文件必须始终解压到相同的输出,但不要求给定的输入必须生成相同的压缩文件。这为压缩算法提供了改进空间,其中可以在不同类型的文件上找到更优化的压缩。听起来您的原始图像是使用比使用更好(或只是不同)的算法压缩的cv2。为了复制精确的压缩版本,您可能需要与用于创建原始图像的压缩算法完全相同的实现。
如果要确保图像确实相同,则应比较解码后的像素值。以不重新发明轮子的名义,我将向您推荐这篇关于该主题的优秀博客文章。
编辑:链接的文章对我来说加载不一致,所以我在这里复制了代码以供参考。
import cv2
import numpy as np
original = cv2.imread("imaoriginal_golden_bridge.jpg")
duplicate = cv2.imread("images/duplicate.jpg")
# 1) Check if 2 images are equals
if original.shape == duplicate.shape:
print("The images have same size and channels")
difference = cv2.subtract(original, duplicate)
b, g, r = cv2.split(difference)
if cv2.countNonZero(b) == 0 and cv2.countNonZero(g) == 0 and cv2.countNonZero(r) == 0:
print("The images are completely Equal")
添加回答
举报