相关疑难解决方法(0)

在 Pillow 和 OpenCV 中打开的图像不相等

我从维基百科(下面看到的树)下载了一个测试图像,以在 python 中进行比较PillowOpenCV(使用cv2)。从感知上看,这两个图像看起来相同,但它们各自的md5哈希值不匹配;如果我减去两个图像,结果甚至不接近纯黑色(原始图像下方显示的图像)。原始图像是 JPEG。如果我先将其转换为 PNG,则哈希值匹配。

最后一张图显示了像素值差异的频率分布。

正如Catree 指出我的减法导致整数溢出。我更新为dtype=int在减法之前也进行转换(以显示负值),然后在绘制差异之前取绝对值。现在差异图像在感知上是纯黑色的。

这是我使用的代码:

from PIL import Image
import cv2
import sys
import md5
import numpy as np

def hashIm(im):
    imP = np.array(Image.open(im))

    # Convert to BGR and drop alpha channel if it exists
    imP = imP[..., 2::-1]
    # Make the array contiguous again
    imP = np.array(imP)
    im = cv2.imread(im)

    diff = im.astype(int)-imP.astype(int)

    cv2.imshow('cv2', im)
    cv2.imshow('PIL', imP)
    cv2.imshow('diff', np.abs(diff).astype(np.uint8))
    cv2.imshow('diff_overflow', diff.astype(np.uint8))

    with open('dist.csv', 'w') as …
Run Code Online (Sandbox Code Playgroud)

python opencv python-imaging-library pillow cv2

4
推荐指数
1
解决办法
2416
查看次数

标签 统计

cv2 ×1

opencv ×1

pillow ×1

python ×1

python-imaging-library ×1