如何在 python(scikit、numpy、pill)中缩放(重新缩放)图像?

How can I zoom(rescale) image in python (scikit, numpy, pill)?

我需要将图像放大 6 倍。但我使用了一些代码,它只能缩放 1.5 倍。我还能用什么?因为如果我从 1.5 更改为 6,代码将不起作用。

from skimage.io import imread, imsave
from skimage.transform import rescale
from skimage import transform

img = imread('C:/abc.png')
imsave('img.png', img)

image_res = transform.rescale(crop, scale=1.5)
imsave('image_res.png', image_res)

我会使用 pillow,但不使用调整大小的方法,而是使用裁剪方法

您需要做一些数学运算才能知道在哪里裁剪图像,因为 Pillow 没有最终分辨率的东西,裁剪需要一个 4 值元组 (fromX,fromY,toX,toY)

它应该是这样的:

from PIL import Image

img = Image.open("filepath")
img.save("img.png","PNG")

zoom = 5

image_res = img.crop((((img.size[0]/2)-img.size[0]/(zoom*2)),((img.size[1]/2)-img.size[1]/(zoom*2)),((img.size[0]/2)+img.size[0]/(zoom*2)),((img.size[1]/2)+img.size[1]/(zoom*2))))

image_res.save("image_res.png","PNG")

如果您希望最终图像具有与原始图像相同的分辨率,只需在调整大小方法中使用它

from PIL import Image

img = Image.open("filepath")
img.save("img.png","PNG")

zoom = 5

image_res = img.resize((img.size[0],img.size[1]),box=(((img.size[0]/2)-img.size[0]/(zoom*2)),((img.size[1]/2)-img.size[1]/(zoom*2)),((img.size[0]/2)+img.size[0]/(zoom*2)),((img.size[1]/2)+img.size[1]/(zoom*2))))
image_res.save("image_res.png","PNG")