我试图拍摄一张小图片并使用Python制作一个大的("像素化")版本。我尝试在scipy
和PIL.Image
中使用最近邻调整大小的方法,并且都输出相同的错误结果。以下是尝试将图像上采样3倍的示例:
import numpy as np
from scipy.misc import imresize
from PIL import Image
img = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=np.uint8)
img_nn_scipy = imresize(img, (9, 9), interp='nearest')
img_nn_pil = np.array(Image.fromarray(img).resize((9, 9), Image.NEAREST))
print img_nn_scipy
print img_nn_pil
两个print语句都输出相同的结果:
[[1 1 1 2 2 2 2 3 3]
[1 1 1 2 2 2 2 3 3]
[1 1 1 2 2 2 2 3 3]
[4 4 4 5 5 5 5 6 6]
[4 4 4 5 5 5 5 6 6]
[4 4 4 5 5 5 5 6 6]
[4 4 4 5 5 5 5 6 6]
[7 7 7 8 8 8 8 9 9]
[7 7 7 8 8 8 8 9 9]]
我预计原始图像中的每个数字现在将被一个包含相同值的3x3块替换。相反,块具有不同的大小,只有1
块是3x3。
这有什么理由吗?有没有办法在Python中合理地解决这个问题?
谢谢!