在将其转换为PNG格式后,我试图为一片MRI运行图形切割算法。我一直遇到以下问题:
使用RGB数据剪切输入数据到imshow的有效范围(浮点数为[0..1],整数为[0..255])。
这甚至在设置vmin和vmax后如下:
plt.imshow(out,vmin=0,vmax=255)
答案 0 :(得分:18)
在缩放np.uint8
范围后将图像投射到[0, 255]
将消除此警告。如本issue所述,它似乎是matplotlib
中的功能。
plt.imshow((out * 255).astype(np.uint8))
答案 1 :(得分:2)
使用plt.imshow(out)
代替plt.imshow(out.astype('uint8'))
。就是这样!
答案 2 :(得分:1)
如果您想要展示它,可以使用img/255
。我还没弄清楚发生了什么。
或
np.array(img,np.int32)
答案 3 :(得分:1)
正如警告所言,它正在裁剪(0,1)...之间的数据。 我尝试了上述方法,但警告消失了,但是我的图像缺少像素值。 因此,我尝试对numpy数组Image(64、64、3)执行以下步骤。 第1步:检查数组的最小值和最大值
logcat
在我的情况下,图像的最小值为负,最大值为正,但所有图像均介于(-1,1.5)之间,因此 第2步:我只是在imshow by之前剪切了数据
maxValue = np.amax(Image)
minValue = np.amin(Image)
请注意,如果您的像素值的范围在(-84,317)之类,则可以使用以下步骤
Image = np.clip(Image, 0, 1)
plt.imshow(Image)