我想将png图片的大小从476x402调整为439x371,我使用了PIL(image)或opencv的调整大小方法,但是,它会损失一些清晰度。调整大小后,图片变得模糊。如何使用 python 调整(缩小)图像而不丢失清晰度?
from skimage import transform, data, io
from PIL import Image
import os
import cv2
infile = 'D:/files/script/org/test.png'
outfile = 'D:/files/script/out/test.png'
''' PIL'''
def fixed_size1(width, height):
    im = Image.open(infile)
    out = im.resize((width, height),Image.ANTIALIAS)
    out.save(outfile)
''' open cv'''
def fixed_size2(width, height):
    img_array = cv2.imread(infile)
    new_array = cv2.resize(img_array, (width, height), interpolation=cv2.INTER_CUBIC)
    cv2.imwrite(outfile, new_array)
def fixed_size3(width, height):
    img = io.imread(infile)
    dst = transform.resize(img, (439, 371))
    io.imsave(outfile, dst)
fixed_size2(371, 439)
Run Code Online (Sandbox Code Playgroud)
来源:476x402

调整大小:439x371

如何将 2000 个像素装入一个只能容纳 1800 个像素的盒子中?你不能。
将相同数量的信息(作为源图像中的像素存储)放入较小的像素区域只能通过
这正是调整图像大小时发生的情况。某种算法(interpolation=cv2.INTER_CUBIC,其他算法)会调整像素值以合并/平均它们,这样您就不会丢失太多信息。
您可以尝试更改算法,或者可以应用进一步的后处理(“锐化”)以再次丰富对比度。
存储图像时,某些格式会进行“有损”存储以最小化文件大小 (JPG),其他格式则进行无损存储(PNG、TIFF、JPG2000...),如果您选择有损图像格式,这可能会进一步模糊图像。
看
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           15456 次  |  
        
|   最近记录:  |