在numpy包中,它们是两个函数调整大小并重新整形。内部如何运作?他们使用什么样的插值?我查看了代码,但没有得到它。谁能帮我吗。或者如何调整图像大小。它的像素会发生什么?
答案 0 :(得分:6)
都没有插值。如果您想知道图像的插值和像素,它们可能不是您想要的功能。有一些image
个包(例如scipy
个)可以处理图像的分辨率。
每个numpy
数组都有shape
个属性。 reshape
只是改变了这一点,而根本不改变数据。新形状必须引用与原始形状相同的元素总数。
x = np.arange(12)
x.reshape(3,4) # 12 elements
x.reshape(6,2) # still 12
x.reshape(6,4) # error
np.resize
不太常用,但是用Python编写并可供学习。您必须阅读其文档,x.resize
是不同的。越大,它实际上会用零重复值或填充。
在1d中调整大小的例子:
In [366]: x=np.arange(12)
In [367]: np.resize(x,6)
Out[367]: array([0, 1, 2, 3, 4, 5])
In [368]: np.resize(x,24)
Out[368]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11])
In [369]: x.resize(24)
In [370]: x
Out[370]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0])
最近有关scipy.misc.imresize
的问题。它还引用了scipy.ndimage.zoom
:
答案 1 :(得分:2)
据我所知numpy.reshape()
只是重塑一个矩阵(如果是图像则无关紧要)。它不进行任何插值,只是操纵矩阵中的项目。
a = np.arange(12).reshape((2,6))
a= [[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]]
b=a.reshape((4,3))
b=[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]