在使用标量乘以图像数组后,使用plt.imshow获取黑色图

Yel*_*low 6 python matplotlib

所以我有点困惑为什么会发生这种情况.

我有一个二进制图像: 在此输入图像描述

现在我想将这个二进制图像转换为RGB空间,因此我使用该dstack函数来连接第3个轴

在此输入图像描述

到目前为止一切正常,但现在我必须乘以out_image数组乘以255RGB空间中的白色,这就是问题发生的地方一切都变黑了在此输入图像描述

但是,如果我绘制另一个随机图像,一切都很好,所以这里发生了什么,我也玩了cmap但是无论cmap我用什么样的它总是在乘以时变成黑色255

有任何想法吗?

Imp*_*est 10

问题中的问题的解决方案是不要将数组乘以255.
另一种选择是将图像的数据类型减少为unsigned int8,
out_image = out_image.astype(np.uint8)

让我解释一下原因:

单通道图像可以具有任意值和数据类型.颜色将由要使用的色彩图确定,并且如果需要,则标准化为特定范围.

在此输入图像描述

相反,假设3通道RGB阵列imshow在两个范围内,[0., 1.][0,255].("三维数组必须是dtype无符号字节,无符号短,float32或float64").
要使用的范围将由数组的数据类型选择:

  1. 阵列应在[0., 1.]范围内,
  2. 一个整数数组,应在范围[0,255].另请注意,整数数组必须是数据类型int8而不是int32.

在此输入图像描述

从RGB情况可以看出,该范围内的整数数组[0,1]保持黑色,以及范围的浮点数组[0., 255.].