众所周知图片要想送到神经网络中进行训练,首先要做的就是将图片进行缩放。下面就梳理一下YOLO等目标检测常用的图片缩放方法。
核心思想:首先将图片中最长的边缩放到目标尺寸,然后再对短边进行“补”
实际上理解起来也非常简单:拿到一张图片后,我们取长和宽缩放比最小的那个。然后以这个缩放比将图片进行缩放,实现代码如下:
image=Image.open("")
iw,ih=image.size
scale=min(w/iw,w/ih)#w,h为目标尺寸,主要先把最长的边压缩为目标尺寸然后求出缩放比
nw=int(iw*scale)
nh=int(ih*scale)
image=image.resize((nw,nw),Image.BICUBIC)#将图片进行尺寸调整
new_image=Image.new('RGB',(608,608),(128,128,128))#空白补灰色
下一步就用paste
这个API,类似粘贴。然后最长的边占满整个尺寸,最小的边进行补。
new_image.paste(image,((w-nw)//2,(h-nh)//2))
这样就完成了图片的裁剪。