深度学习,需要大量的测试样本和训练样本,从各处“搜刮”来的数据整合起来,容易遇到:图片名(文件夹)长度不一、中英文数字夹杂、图片尺寸不同等问题,导入深度模型无法正常载入图片。
废话不多说,上代码。。。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "li"
""" -------------------------------------- # 程序:文件(夹)批量更名、图像批量resize # 版本:0.1 # 作者:li # 日期:2016-03-11 # 语言:Python 2.7 -------------------------------------- """
import os
from PIL import Image
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r'c:\windows\fonts\SimSun.ttc', size=14)
# 获取当前路径
path_abs = os.getcwd()
print u'*****************开始文件名更名操作*****************'
print path_abs
# 遍历当前路径下的文件以及文件目录
for root, dir_name, file_name in os.walk(path_abs):
# 统计文件夹个数
num_dir = len(dir_name)
for idx, item in enumerate(dir_name):
print u'第', idx, u'个文件正在更名......'
item_new = 'test_' + '0' * (1 - idx / 10) + str(idx)
# 原文件路径
path_dir_old = path_abs + '\\' + item
# print u'原文件路径:', path_dir_old
# 新文件路径
path_dir_new = path_abs + '\\' + item_new
# print u'新文件路径:', path_dir_new
# 更名操作
os.renames(path_dir_old, path_dir_new)
print u'*****************进度报告:文件名更名完毕!*****************'
print u'*****************进度报告:开始图片名更名*******************'
for root1, dir_name1, file_name1 in os.walk(path_abs):
num1_dir = len(dir_name1)
for idx1, item1 in enumerate(dir_name1):
path_dir1 = path_abs + '\\' + item1
for root2, dir_name2, file_name2 in os.walk(path_dir1):
for idx2, item2 in enumerate(file_name2):
# 原路径 + 图片名
item2_old = path_dir1 + '\\' + item2
# 新路径 + 图片名(强制转换成jpg格式,数字6制定图片名长度以及0的填充个数)
item_new2 = 'idx_'+ '0' * (5 - len(str(idx2))) + str(idx2)
item2_new = path_dir1 + '\\' + item_new2 + '.jpg'
# 更名
os.rename(item2_old, item2_new)
# resize 成指定尺寸大小
img = Image.open(item2_new)
img_new = img.resize((220, 220))
# save 保存
img_new.save(item2_new)
print u'*****************进度报告:图片更名操作完毕!******************'
当然这种批处理软件超级多,也很好用呀,分享两个很赞的批处理软件,使用超级简单,就不在附录教程了。。。。多BB一句:不喜勿下啦