例如:
img.resize((width, height),Image.ANTIALIAS)
第一个参数:width,height, 表示设置传入图片的宽和高。
第二个参数:
- Image.NEAREST :低质量
- Image.BILINEAR:双线性
- Image.BICUBIC :三次样条插值
- Image.ANTIALIAS:高质量
上面是单张图片尺寸的改变,针对大量数据集图片,可以批量操作
from PIL import Image
import os.path
import glob
def convertjpg(jpgfile,outdir,width=1280,height=720):
img=Image.open(jpgfile)
new_img=img.resize((width,height),Image.BILINEAR)
new_img.save(os.path.join(outdir,os.path.basename(jpgfile)))
for jpgfile in glob.glob("E:/test/picture/12/*.jpg"): #返回12文件夹下所有的jpg路径
convertjpg(jpgfile,"E:/test/picture/111/") #返回的是111文件夹下下个文件的所有路径
还可以借助于cv
比如宽和高按照一定比例缩放
im_scale=1.5
cv2.resize(img, None, None, fx=im_scale, fy=im_scale, interpolation=cv2.INTER_LINEAR)
或者直接将原来图片缩放到(521,500)的尺寸
re_im = cv2.resize(img, (521, 500), interpolation=cv2.INTER_LINEAR)
还可使用下面方法读取图片:
from PIL import Image
import numpy as np
from os import listdir
from os.path import isfile, join
from IPython.display import display
imgList = [f for f in listdir("/home/xilinx/jupyter_notebooks/bnn/pictures/road_signs/") if isfile(join("/home/xilinx/jupyter_notebooks/bnn/pictures/road_signs/", f))]
images = []
for imgFile in imgList:
img = Image.open("/home/xilinx/jupyter_notebooks/bnn/pictures/road_signs/" + imgFile)
images.append(img)
img.thumbnail((64, 64), Image.ANTIALIAS)
display(img)