scipy.misc imread returns 使用 flatten=True 读取 RGBA 图像时的二维零数组
scipy.misc imread returns 2d array of zeroes when reading RGBA image with flatten=True
我正在尝试从 RGBA 图像中获取具有灰度值的二维 numpy 数组。我使用的方法是 spicy.misc
中的 imread
,但是每当我设置 mode='F'
或 flatten=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.]]
和图片:letter A
你的头像是"pure alpha"!图像的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
我正在尝试从 RGBA 图像中获取具有灰度值的二维 numpy 数组。我使用的方法是 spicy.misc
中的 imread
,但是每当我设置 mode='F'
或 flatten=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.]]
和图片:letter A
你的头像是"pure alpha"!图像的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