Python Numpy阵列到图像和使用枕头的通道数
我想将一个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的值,则它工作正常 我的代码有什么错误吗?无法将
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])