如何解决skimage.transform.rescale为输入图像添加了额外的尺寸
使用<webview src="https://mail.google.com/" useragent="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko"></webview>
时,当我的输入图像仅为2维时,我得到一个输出图像数组,该数组具有3维。
skimage.transform.rescale()
为此,我得到的输出为:
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)
我不确定将值2附加的维度累加在哪里。我检查了重新缩放功能文档,但没有参数有助于增加尺寸。
解决方法
所以问题在于 channel 维度被解释为空间维度。
您应该传递transform.rescale
multichannel=True
标志,以免影响频道:
image_rescaled = transform.rescale(image,scale=0.5,anti_aliasing=True,multichannel=True)
-
示例:
q = np.zeros((397,602,3)) x1 = transform.rescale(q,anti_aliasing=True) x2 = transform.rescale(q,multichannel=True) x1.shape # (198,301,2) x2.shape # (198,3)
因此,transform.rescale
将数组视为形状为(397、602、3)的3D图像,该图像下降到(198、301、2),并与通道一起插值,就好像它们是另一个空间维度。
如果图像是灰色图像,没有通道尺寸,则不需要传递multichannel=True
标志。这会将最后一个轴视为通道,并且会得到不希望的输出。
-
示例:
q1 = np.zeros((397,602)) x3 = transform.rescale(q1,multichannel=True) x4 = transform.rescale(q1,anti_aliasing=True) x3.shape # (198,602) x4.shape # (198,301)
您可以参考docs
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。