问题描述
使用<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