这个类主要是将图片裁剪成所需的分辨率,宽高可以自己设置。批量裁剪同一个文件夹下面的全部jpg图片,然后将其放置到另外一个文件夹 。然后重新命名。以下是源码:
import cv2 import os import glob '''这个类主要作用是将图片进行裁剪,然后更改文件名''' path='E:/labelme/picture/' outpath='E:/labelme/outPicture/' trainlist=os.listdir(path) i=0 def resizeimage(readpath,savepath,width,height): try: # print(savepath) print(readpath) #调用cv2.imread读取图片,读入格式为IMREAD_COLOR #使用os.path模块的join方法生成路径 img_array=cv2.imread(readpath,cv2.IMREAD_COLOR) #调用cv2.resize函数resize图片 new_array=cv2.resize(img_array,(width,height)) #缩小像素 #生成图片存储的目标路径 save_path=os.path.join(savepath,item) # print(save_path) #调用cv2的imwrite函数保存图片 cv2.imwrite(save_path,new_array) except Exception as e: print(e) for item in trainlist: # print(item.title()) m_path=os.path.join(path,item) m_num_folder=len(trainlist) #第一层文件夹的总数 print('m:total have %d folders'%(m_num_folder)) #打印第一层文件夹的总数 if item.endswith('.jpg'): # 修改图片 resizeimage(m_path, os.path.abspath(outpath), 512, 512) # 重命名保存 # 获取拆分后的名 name = os.path.splitext(item) # print(name[0]) # print(name[1]) # 获取名称后缀 picType = name[1] src = os.path.join(os.path.abspath(outpath), item) dst = os.path.join(os.path.abspath(outpath), '%d'%i + picType) try: os.rename(src, dst) print('have rename somePic=' + src + ';' + dst) i += 1 except: continue print('total %d to converted %d jpg' % (m_num_folder, i))