首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用plt.imshow()时,png文件显示蓝色图像

使用plt.imshow()时,png文件显示蓝色图像
EN

Stack Overflow用户
提问于 2020-07-19 17:33:21
回答 1查看 334关注 0票数 0

我试图用matplotlib.pyplot.imshow()绘制一个png文件,但它显示的是一个蓝色的图像(见下文)。它适用于jpeg文件,但不适用于png。

这是代码:

代码语言:javascript
复制
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

我所用的图像:

蓝色图像:

Python 3.8.2

matplotlib 3.3.0

枕头7.2.0

矮胖1.19.0

操作系统: Windows 10

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-19 17:45:45

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

在将图像传递到convert()之前使用numpy.array方法

代码语言:javascript
复制
data = np.array(im.convert())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62983567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档