这个类主要是将图片裁剪成所需的分辨率,宽高可以自己设置。批量裁剪同一个文件夹下面的全部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))