scikit-image 0.18.1使用rescale缩放彩色图像不保留通道数问题求助
问题原因
这个问题是scikit-image 0.18版本的rescale函数参数默认逻辑变更导致的:
- 0.17及更早版本中,
rescale遇到3维输入会自动判定最后一维为通道维度,不会对该维度做缩放处理 - 0.18版本调整了默认逻辑,如果你不显式指定通道维度,函数会把所有维度都视为空间维度执行缩放。你的缩放系数为
1000/1444 ≈ 0.692,原始最后一维的3个通道乘以该系数后取整得到2,就是你看到的输出最后一维为2的原因。
解决方法
调用rescale时显式指定通道轴即可,代码修改如下:
img = rescale(img, scale, channel_axis=-1)
channel_axis=-1表示最后一维是通道维度,缩放时跳过该维度- 如果你要兼容旧版本写法,也可以临时用
multichannel=True参数,但该参数在0.19及之后版本已经废弃,更推荐用channel_axis参数
修改后再打印输出的img.shape就会得到(1000, 1000, 3)的预期结果。
内容的提问来源于stack exchange,提问作者moha
相关产品推荐
相关产品推荐

