温馨提示:本文翻译自stackoverflow.com,查看原文请点击:numpy - png file shows bluish image when using plt.imshow()
image-processing matplotlib numpy python-imaging-library

numpy - 使用plt.imshow()时png文件显示带蓝色的图像

发布于 2021-04-15 08:47:06

我正在尝试使用绘制PNG文件,matplotlib.pyplot.imshow()但显示的图像是蓝色的(请参见下文)。它适用于jpeg文件,但不适用于png。

这是代码:

import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
im = Image.open('apple_logo.png')
im.save('test.png') #test.png is same as original
data = np.array(im)
print(data) 
plt.imshow(data) #shows a bluish image of the logo

我正在使用的图像:

我正在使用的apple_logo图片

偏蓝的图片:

apple_logo的蓝色图像

Python 3.8.2
matplotlib 3.3.0
枕头7.2.0
numpy 1.19.0
操作系统:Windows 10

查看更多

提问者
Manik
被浏览
0
Warren Weckesser 2020-07-20 01:45

原始PNG图像是索引的PNG文件。也就是说,它具有一个调色板(即用于颜色的查找表),并且构成图像的数据数组是指向该查找表的索引的数组。当你使用转换im为numpy数组时data = np.array(im)data是调色板中的索引数组,而不是实际颜色的数组。

convert()在通过图像之前使用方法numpy.array

data = np.array(im.convert())