当使用skimage.transform.rescale()时,当输入图像仅为2维时,得到一个具有三维的输出图像数组。
from skimage import io, color, transform
image = io.imread(r'C:\Users\ParthD\PycharmProjects\pythonProject\test_images\6.png')
image_bw = color.rgb2gray(color.rgba2rgb(image))
image_rescaled = transform.rescale(image, scale=0.5, anti_aliasing=True)
print(image_bw.shape)
print(image_rescaled.shape)为此,我得到的输出如下:
(397, 602)
(198, 301, 2)值2的附加维在哪里被加起来,我不确定。我查看了rescale函数文档,但是没有任何参数有助于这个额外的维度。
发布于 2020-10-31 08:06:24
因此,问题在于信道维被解释为空间维数。
您应该传递transform.rescale multichannel=True标志,这样它就不会影响信道:
image_rescaled = transform.rescale(image, scale=0.5, anti_aliasing=True, multichannel=True)因此,transform.rescale将您的数组作为一个三维形状图像(397,602,3),下降到(198,301,2),并与通道一起插值,就好像它们是另一个空间维度一样。
如果图像是灰色图像,没有通道维度,则不需要传递multichannel=True标志。这将导致最后一个轴被视为通道,您将得到不想要的输出。
您可以参考文档
https://stackoverflow.com/questions/64619498
复制相似问题