绘制来自具有3个通道的numpy数组的彩色图像

时间:2017-01-25 16:32:13

标签: python numpy matplotlib

在我的Jupyter笔记本中,我试图显示一个我正在通过Keras迭代的图像。我使用的代码如下

$("#date_filter_si").contents().filter(function() {
    return this.nodeType === 3; 
}).remove();

但这仅绘制单个通道,因此我的图像为灰度。如何使用3个通道输出彩色图像图。 ?

2 个答案:

答案 0 :(得分:4)

如果要显示RGB图像,则必须提供所有三个通道。根据您的代码,您只显示第一个频道,因此matplotlib没有信息将其显示为RGB。相反,它会将值映射到gray色彩映射,因为您调用了plt.gray()

相反,您需要将RGB图像的所有通道传递到imshow,然后使用真彩色显示,并忽略图形的颜色图

sub.imshow(imgs, interpolation='nearest')

更新

由于imgs实际上是2 x 3 x 224 x 224,因此您需要在显示图片之前将imgs编入索引并将尺寸置换为224 x 224 x 3

im2display = imgs[1].transpose((1,2,0))
sub.imshow(im2display, interpolation='nearest')

答案 1 :(得分:0)

它对你有用: 尝试通过允许将频道放在最后,

image.permute(2 , 3 , 1 , 0)

然后通过 np.squeeze() 删除图像索引:

plt.imshow((np.squeeze(image.permute(2 , 3 , 1 , 0))))