Python Numpy阵列到图像和使用枕头的通道数

Python Numpy阵列到图像和使用枕头的通道数,python,arrays,image,numpy,python-imaging-library,Python,Arrays,Image,Numpy,Python Imaging Library,我想将一个numpy数组转换成一个图像,并编写了以下代码 import numpy as np from PIL import Image Channels = 5 x = np.random.choice([0,1] , (27,27,Channels), p=[1./3, 2./3]) x *= 255 PIL_im = Image.fromarray(np.uint8(x)) 如果通道将2,3,4作为值,并且不适用于1或大于或等于5的值,则它工作正常 我的代码有什么错误吗?无法将

我想将一个numpy数组转换成一个图像,并编写了以下代码

import numpy as np
from PIL import Image

Channels = 5

x = np.random.choice([0,1] , (27,27,Channels), p=[1./3, 2./3])
x *= 255

PIL_im = Image.fromarray(np.uint8(x)) 
如果
通道
将2,3,4作为值,并且不适用于1或大于或等于5的值,则它工作正常

我的代码有什么错误吗?无法将numpy阵列转换为具有更多通道的图像吗

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Feb  3 19:35:44 2021

@author: Pietro


"""

import numpy as np
from PIL import Image

Channels = 5
# Channels = 1

if Channels < 1:
    Channels = 1

if Channels > 1:
    x = np.random.choice([0,1] , (270,270,Channels), p=[1./3, 2./3])
    
else:
    x = np.random.choice([0,1] , (270,270), p=[1./3, 2./3])
    
# print(x)
print('x[0][0] : ',x[0][0])
print('x shape : ',x.shape)
print('x dim : ',x.ndim)
x *= 255
print('x[0][0] : ',x[0][0])
print('x shape : ',x.shape)
print('x dim : ',x.ndim)

if Channels > 1:
    x = x[:,:,0:4]
    
else:
    x = x


PIL_im = Image.fromarray(np.uint8(x))
    

print('PIL_im size : ', PIL_im.size)
print('PIL_im mode : ', PIL_im.mode)
PIL_im.show()
或:

即使通道数超过5个,也不存在任何错误,并且不需要对阵列进行切片:

if Channels > 1:
        x = x[:,:,0:4])

你需要使用Pillow的一个可接受的模式,如果你想要5个频道,你可以考虑<代码> TIFFFrase<代码>来编写TIFF。x= NP。随机。选择([0,1,大小=(27,27,频道),P=(1。/ 3, 2。/3)]:我相信有一个缺失。
PIL_im = Image.fromarray(np.uint8(x), mode='RGBA')
if Channels > 1:
        x = x[:,:,0:4])