如何在图像处理(scipy/numpy/python)中减小图像大小

12 投票
3 回答
27898 浏览
提问于 2025-04-16 18:07

你好,我有一张1024 x 1024的图片,我用numpy里的“fromfile”命令把这张图片的每一个像素放进了一个矩阵里。

我想知道怎么通过修改这个矩阵a来把图片的大小缩小(比如缩小到512 x 512)。

a = numpy.fromfile(( - path - ,'uint8').reshape((1024,1024))

我不知道该怎么修改矩阵a来缩小图片的大小。如果有人有主意,请分享你的知识,我会很感激的。谢谢!


补充说明:

当我查看结果时,发现我得到的读取器把图片读取进了一个“矩阵”里。所以我把“数组”改成了矩阵。

Jose告诉我,我可以只取偶数列和偶数行,然后放进一个新的矩阵里。这样就能把图片的大小减半。我需要在scipy/numpy中使用什么命令来做到这一点呢?

谢谢!

3 个回答

18

使用scipy库中的缩放功能:

http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.zoom.html#scipy.ndimage.zoom

from scipy.ndimage.interpolation import zoom
a = np.ones((1024, 1024))
small_a = zoom(a, 0.5)
22

如果你想把图片调整到特定的分辨率,可以使用 scipy.misc.imresize 这个工具:

import scipy.misc

i_width = 640
i_height = 480

scipy.misc.imresize(original_image, (i_height, i_width))
3

我觉得最简单的方法就是只取图像的一部分,也就是一些行和列。可以把这个想象成从数组中抽样。比如说,只取那些偶数行和偶数列,然后把它们放到一个新的数组里,这样你就得到了一个尺寸减半的新图像。

撰写回答