我继承了一个遗留代码,由于scipy中的更新,我现在必须用PIL.Image.resize
替换scipy.misc.imresize
这是原始代码
# xn.shape = (519, 20)
xnr = scipy.misc.imresize(xn, (200, xn.shape[1]))
# xnr.shape = (200, 20) i think ?
SomeOtherArray[i, :] = xnr.flatten()
根据建议here,我应该调用np.array(Image.fromarray(arr).resize())
# xn.shape = (519, 20)
xnr = np.array(Image.fromarray(xn).resize((200, xn.shape[1])))
# xnr.shape = (20, 200) !!! Not (200, 20)
SomeOtherArray[i, :] = xnr.flatten()
问题1:xnr = scipy.misc.imresize(xn, (200, xn.shape[1]))
给出(200, 20)
的形状是正确的吗
问题2:我如何使它在使用PIL后,xnr是正确的,正如先前在原始代码中预期的那样
由于Numpy和PIL之间的尺寸顺序不同,这有点令人困惑
PIL中的图像的大小为
(width, height)
但是,表示图像的Numpy数组具有形状
(height, width)
以下代码片段说明了这一点:
因此,当调用
Image.fromarray(xn)
时,您会看到一幅20宽x 539高的图片现在
Image.fromarray(xn).resize((200, xn.shape[1]))
是一张200宽x20高的图片,通过将原始539高度缩小到20,并将原始20宽度拉伸到200来获得如果要保持原来的20宽度,并将539高度缩小到200,应执行以下操作:
Image.fromarray(xn).resize((xn.shape[1], 200))
相反
scipy.misc.imresize(xn, (200, 20))
返回一个具有(200, 20)
形状的数组,如文档中所述:相关问题 更多 >
编程相关推荐