常用视觉库控制保存质量
最近经常涉及到图像的读取和保存,读取都没什么问题,主要是保存,因为忽略保存质量参数而导致保存图像质量一般,当然最好的操作是不保存,直接在代码中对图像操作。
PIL
在Pillow中的PIL.Image.save()方法中,使用默认参数保存jpg图片的过程中发现图片被压缩的很严重,导致原来很大的图片变成几十KB。但是有些时候往往需要图片的大小不能变化太大或不能太小。这是因为在保存为jpg的过程中,PIL.Image.save()方法内部使用压缩算法对图片进行的压缩处理。
在保存的时候,加上一些参数。
form PIL import Image |
quality参数: 保存图像的质量,值的范围从1(最差)到95(最佳)。 默认值为75,使用中应尽量避免高于95的值; 100会禁用部分JPEG压缩算法,并导致大文件图像质量几乎没有任何增益。
使用此参数后,图片大小会增加。如果图片的大小还不能满足你的需求,是否还有其他方式去增加图片大小呢?
通过查阅资料并尝试,发现save方法还有一个可以配合quality使用的参数,能够大大增加图片大小:
img.save(new_name, quality=95, subsampling=0) # 可能的子采样值是0,1和2 |
subsampling参数:子采样,通过实现色度信息的分辨率低于亮度信息来对图像进行编码的实践。
注意: 以上方法的参数只针对于保存为JPG/JPEG格式的图片的情况,在项目实践过程中,往往quality参数就满足了要求。
OPENCV
cv2.CV_IMWRITE_JPEG_QUALITY
设置图片格式为.jpeg或者.jpg的图片质量,其值为0—100(数值越大质量越高),默认95cv2.CV_IMWRITE_WEBP_QUALITY
设置图片的格式为.webp格式的图片质量,值为0–100cv2.CV_IMWRITE_PNG_COMPRESSION
设置.png格式的压缩比,其值为0–9(数值越大,压缩比越大),默认为3
import cv2 |