在将MRI切片转换为PNG格式后,我尝试对它运行图形切割算法。我一直遇到以下问题:
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
即使在如下设置vmin
和vmax
之后,也是如此:
plt.imshow(out, vmin=0, vmax=255)
在将MRI切片转换为PNG格式后,我尝试对它运行图形切割算法。我一直遇到以下问题:
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
即使在如下设置vmin
和vmax
之后,也是如此:
plt.imshow(out, vmin=0, vmax=255)
8条答案
按热度按时间toiithl61#
在缩放
[0, 255]
范围后将图像转换为np.uint8
将消除此警告。这似乎是matplotlib
中的一个功能,如本issue中所讨论的。e5njpo682#
用
plt.imshow(out.astype('uint8'))
代替plt.imshow(out)
,就是这样!qqrboqgw3#
如果要显示它,可以使用
img/255
。或者
原因是,如果颜色强度是浮点数,则matplotlib expects的取值范围为0到1。如果是int,则取值范围为0到255。因此,您可以将所有数值强制为int,也可以将它们全部缩放1/255。
gojuced74#
正如警告所说的,它正在剪切(0,1)之间的数据....我尝试了上述方法,警告消失了,但我的图像有丢失的像素值。所以我尝试以下步骤为我的numpy数组图像(64,64,3)。步骤1:检查数组的最小值和最大值
对于我的情况,图像的最小值为负值,最大值为正值,但所有值都在大约(-1,1.5)之间,因此步骤2:我只是在显示之前将数据剪切了
请注意,如果您的像素值范围类似于(-84,317)等,则可以使用以下步骤
uajslkp65#
只需将其设置在此范围[0:1]内
如果在调用amax()和amin()之后,它介于[-1,1]之间,则
如果介于[0,250]之间
pbossiut6#
plt.show(Image)如果图像dtype为
float
,则图像范围应在0到1之间;如果图像dtype为int
,则图像范围应在0-255之间输入
image.dtype
如果它是浮点数那么问题是它的范围是-1到1,你需要使范围在0和1之间,这是你做它的方法:如果'image.dtype outputint,则问题在于值为0和1,且其类型为int,因此将类型转换为float
或将图像的多个值乘以255,使0和1之间的值变为0和255之间的值
参考https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.imshow.html
yqlxgs2m7#
对于基于Pytorch的grad_cam,我在
show_cam_on_image
中也遇到了类似的错误,而工作正常的是xienkqul8#
只需使用
.astype("uint8")
,因此您应该得到如下内容: