1 回答

TA贡献2003条经验 获得超2个赞
我能够按如下方式重现您的问题:
import numpy as np
from skimage.transform import resize, rescale
image = np.random.random((512, 512, 3))
resized = resize(image, (256, 256))
rescaled2x = rescale(
rescale(resized, 0.5),
2,
)
print(rescaled2x.shape)
# prints (256, 256, 4)
问题是resize可以推断你的最终维度是通道/RGB,因为你给它一个 2D 形状。rescale,另一方面,将您的数组视为形状为 (256, 256, 3) 的 3D 图像,它下降到 (128, 128, 2),也沿着颜色进行插值,就好像它们是另一个空间维度一样,然后上采样到 (256, 256, 4)。
如果您查看rescale文档,您会发现“多通道”参数,描述为:
图像的最后一个轴是被解释为多通道还是另一个空间维度。
所以,更新我的代码:
rescaled2x = rescale(
rescale(resized, 0.5, multichannel=True),
2,
multichannel=True,
)
print(rescaled2x.shape)
# prints (256, 256, 3)
添加回答
举报