我有一个3维的numpy数组,并使用Pillow将其保存为JPEG图像。当我使用Pillow重新加载图像时,得到的numpy数组是不同的。
我写了一个演示代码:
代码的输出如下所示:
from PIL import Image
import numpy as np
file_extension = 'jpeg'
# generate a sample image
image = range(1, 2*2*3+1)
image = np.uint8(np.array(image).reshape(2,2,3))
print 'image', image
img = Image.fromarray(image, "RGB")
img.save('test.'+file_extension)
# load image
loaded_image = Image.open('test.'+file_extension)
loaded_image = np.array(loaded_image.convert('RGB'))
print 'loaded image', loaded_image
代码的输出如下所示:
image [[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
loaded image [[[ 3 4 6]
[ 3 4 6]]
[[ 7 8 10]
[ 8 9 11]]]
loaded_image
与原始image
不同。但是,如果我将file_extension
更改为“ png”或“ bmp”等,则loaded_image
将与原始image
相同。
我想知道是否有人遇到过类似的问题,并知道为什么使用Pillow保存JPEG格式图像会出现这样的问题?