opencv-python使用cv2.resize()函数批量放大图片

python代码使用opencv中cv2.resize()函数批量放大图片,缩小也可。

1. 需求描述

最近想做一个人脸的跨数据集对比实验,之前的训练图片大小是240*240的,网络输入要求大小为224*224,现在要做实验的数据集图片大小为100*100,需要调整到符合网络输入要求的大小。

2. 解决方法

可以调整图片分辨率的方法很多,除了opencv之外,python自带的PIL工具包也可以处理,这里只说使用opencv的处理方法。

1)首先了解cv2.resize()函数

官网解释如下:
opencv-python使用cv2.resize()函数批量放大图片_第1张图片
其中各个参数含义:

scr:原图 可以是一张或多张图片
dsize:输出图像尺寸 根据自己需要的尺寸指定,数据形状为(H,W,C)
fx:沿水平轴的比例因子 这个基本不用自己指定,默认就好
fy:沿垂直轴的比例因子 同上
interpolation:插值方法 可选最近邻插值、双线性插值(默认设置)、4x4像素邻域的双三次插值等,平衡计算时间和效果,双线性插值效果已经可以达到要求

2)具体代码

import os
import cv2

datadir = "D:\\pycharm_program\\RAFDB\\test"

'''设置目标像素大小,此处设为240'''
IMG_SIZE = 240

'''使用os.path模块的join方法生成路径'''
path = os.path.join(datadir)

'''使用os.listdir(path)函数,返回path路径下所有文件的名字,以及文件夹的名字'''
img_list = os.listdir(path)

for i in img_list:
    img_array = cv2.imread(os.path.join(path, i), cv2.IMREAD_COLOR)
    '''调用cv2.resize函数resize图片'''
    new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
    img_name = str(i)  # 保存的图片与处理前图片同名
    '''生成图片存储的目标路径'''
    save_path = 'D:\\pycharm_program\\RAFDB\output\\test\\'+str(i)
    '''调用cv.2的imwrite函数保存图片'''
    cv2.imwrite(save_path, new_array)

此处参考https://blog.csdn.net/weixin_40446557/article/details/103823509,做了一些改动。

3. 执行结果

处理之前
opencv-python使用cv2.resize()函数批量放大图片_第2张图片

处理之后
opencv-python使用cv2.resize()函数批量放大图片_第3张图片
我的训练集有12271张图片,计算时间在20s左右,测试集3068张图片,大概5s左右。

4. 小结

上午鼓捣半天各种插值方法,看到很多代码是从0开始构建,以为会很麻烦,结果opencv直接有现成的,还是要多多学习呀!

你可能感兴趣的:(opencv,计算机视觉,深度学习)