【问题标题】:How can I zoom(rescale) image in python (scikit, numpy, pill)?如何在 python(scikit、numpy、pill)中缩放(重新缩放)图像?
【发布时间】:2021-11-12 23:44:24
【问题描述】:

我需要将图像缩放 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)

【问题讨论】:

    标签: python numpy scikit-learn python-imaging-library


    【解决方案1】:

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

    您需要做一些数学运算才能知道在哪里裁剪图像,因为 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")
    

    【讨论】:

      猜你喜欢
      • 2018-06-15
      • 2020-11-06
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 2013-05-29
      • 2014-09-04
      • 1970-01-01
      • 2014-11-23
      相关资源
      最近更新 更多