Python scipy.misc imread在读取带有flant=True的RGBA图像时返回二维零数组

Python scipy.misc imread在读取带有flant=True的RGBA图像时返回二维零数组,python,scipy,python-imaging-library,pillow,imread,Python,Scipy,Python Imaging Library,Pillow,Imread,我正在尝试从RGBA图像中获取一个具有灰度值的2d numpy数组。我使用的方法是imreadfromspick.misc,但每当我设置mode='F'或flatte=True时,结果就是一个零矩阵 我的代码: img_mat = misc.imread(f, mode='F') 也试过 img_mat = misc.imread(f, flatten=True) 输出: (278, 278) [[ 0. 0. 0. ..., 0. 0. 0.] [ 0. 0. 0. ...

我正在尝试从RGBA图像中获取一个具有灰度值的2d numpy数组。我使用的方法是
imread
from
spick.misc
,但每当我设置
mode='F'
flatte=True
时,结果就是一个零矩阵

我的代码:

img_mat = misc.imread(f, mode='F')
也试过

img_mat = misc.imread(f, flatten=True)
输出:

(278, 278)
[[ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 ..., 
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]]
图像:

您的图像是“纯阿尔法”!图像的RGB分量均为0;只有alpha通道具有非零值。显然,当基础图像库(PIL或Pillow)将RGBA图像转换为模式“F”时,它会忽略alpha通道,因此最终会得到一个零数组

您可以读取RGBA数据,然后使用alpha通道作为展平图像,而不是在读取图像时展平图像:

img_data = imread(f)         # Read the RGBA image
img_mat = img_data[:, :, 3]  # Extract the alpha channel
你的图像是“纯阿尔法”!图像的RGB分量均为0;只有alpha通道具有非零值。显然,当基础图像库(PIL或Pillow)将RGBA图像转换为模式“F”时,它会忽略alpha通道,因此最终会得到一个零数组

您可以读取RGBA数据,然后使用alpha通道作为展平图像,而不是在读取图像时展平图像:

img_data = imread(f)         # Read the RGBA image
img_mat = img_data[:, :, 3]  # Extract the alpha channel

谢谢,一小时后我发现了。用于获取三维数组作为Keras中Conv2d层的输入
image\u mat=misc.imread(f)image\u mat=image\u mat[:,:,3://[1.0]
谢谢,一小时后发现。用于获取三维数组作为Keras中Conv2d层的输入
image\u mat=misc.imread(f)image\u mat=image\u mat[:,:,3://[1.0]