python3.6深度学习图片集处理项目源代码(为cnn等准备图片集合,批量生成、删除、改名、旋转、调整图片大小,包括删除指定路径下所有文件)
2018-03-08 11:15
633 查看
为了方便深度学习,训练模型编写该代码,图片批量生成、删除、改名、旋转、调整大小、排序、计算图片数量,另外还添加有删除指定路径下所有文件(包括文件夹)的代码,感觉很实用,欢迎大家补充修改。#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/3/4 13:07
# @File : imagespro.py
# @Software: PyCharm
import os
import os.path
from PIL import Image
from skimage import transform,data
import shutil #shutil是一个高级文件操作的包,实现了文件及文件集合复制与删除的功能
# 批量处理文件夹中图片
class imgPro():
'''
批量重命名文件夹中的图片文件
'''
def __init__(self):
self.path = r'C:/Users/images'
#修改文件名(从0开始排序)
def rename(self):
print('修改文件名(从0开始排序)')
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), str(i) + '.jpg')
try:
os.rename(src, dst)
print ('converting %s to %s ...' % (src, dst))
i = i + 1
except:
continue
print ('total %d to rename & converted %d jpgs' % (total_num, i))
# 每张图片每旋转30度,生成一张图片
def rotate(self):
print('每张图片每旋转30度,生成一张图片')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
# i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
for angle in range(30,360,30):
dst = os.path.join(os.path.abspath(self.path), str(item)[:-4] + '_' + str(angle) + '.jpg')
try:
img = Image.open(src)
img = img.rotate(angle)
img.save(dst)
print ('converting %s to %s ...' % (src, dst))
i = i + 1
except Exception as e:
print("rotate error = ",e)
continue
angle = angle + 30
print ('total %d to rename & converted %d jpgs' % (total_num, i))
# 图像缩放
def resize(self,w,h):
print('图像缩放')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item) # 路径+文件名
# for angle in range(30,360,30):
dst = os.path.join(os.path.abspath(self.path), str(item)[:-4] + '_resize' + '.jpg')
try:
img = Image.open(src)
img = img.resize((w, h))
img.save(dst)
print ('resize %s to %s ...' % (src, dst))
i = i + 1
except Exception as e:
print("resize error = ",e)
continue
print ('total %d to resize & converted %d jpgs' % (total_num, i))
# 图像缩放后删除原图
def resize(self,w,h):
print('图像缩放后删除原图')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item) # 路径+文件名
# for angle in range(30,360,30):
dst = os.path.join(os.path.abspath(self.path), str(item)[:-4] + '_resize' + '.jpg')
try:
img = Image.open(src)
new = img.resize((w, h))
new.save(dst)
img.close()
print ('resize %s to %s ...' % (src, dst))
i = i + 1
except Exception as e:
print("resize error = ",e)
continue
# angle = angle + 30
print ('total %d to resize & converted %d jpgs' % (total_num, i))
# 获取图片总数
def getsum(self):
print('获取图片总数')
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 0
for item in filelist:
if (item.endswith('.jpg') or item.endswith('.png')):
i = i + 1
return i
# 删除文件夹下所有文件
# def delallfile(self):
# print('删除文件夹下所有文件')
# filelist = os.listdir(self.path)
# total_num = len(filelist)
# if total_num == 0:
# print("not find files!")
# return
# for i in filelist:
# src = os.path.join(self.path, i) # 取文件绝对路径
# if os.path.isfile(src):
# os.remove(src)
# else:
# delallfile(src)
# 删除文件夹下所有文件(包括文件夹),保留该文件夹
def delallfile1(self):
print('删除文件夹下所有文件(包括文件夹),保留该文件夹')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
for i in filelist:
src = os.path.join(self.path, i) # 取文件绝对路径
if os.path.isfile(src):
os.remove(src)
else:
shutil.rmtree(src) # 删除文件夹和文件夹里面的所有文件
# 删除文件夹下所有jpg图片
def delalljpg(self):
print('删除文件夹下所有jpg图片')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item) # 路径+文件名
if os.path.isfile(src):
os.remove(src)
# 删除文件夹下w*h以外的jpg图片
def delallwhjpg(self,w,h):
print('删除文件夹下w*h以外的jpg图片')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item) # 路径+文件名
if os.path.isfile(src):
im = Image.open(src)
wx, wh = im.size
im.close()
if (wx != w) and (wh != h):
os.remove(src)
# 修改文件后缀为.jpg
def setpostfix(self):
print('修改文件后缀')
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 0
for item in filelist:
portion = os.path.splitext(item) # 将文件名拆成名字和后缀
new = portion[0] + ".jpg"
os.rename(item, new) # 修改
return i
# 批量水平翻转图片transpose
def transpose(self):
print('批量水平翻转图片transpose')
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), 'transpose' + '.jpg')
try:
img = Image.open(src)
img = img.transpose(Image.FLIP_LEFT_RIGHT)
img.save(dst)
except:
continue
print ('transpose worked')
if __name__ == '__main__':
demo = imgPro()
demo.path = r'C:/Users/images'
# demo.rename() # 从0开始排序命名
# demo.resize(300,300) # 缩放 300*300
# demo.delalljpg() # 删除全部jpg图片
# demo.delallfile1() # 删除全部文件
转载来源:http://blog.csdn.net/wyx100/article/details/79439301
# -*- coding: utf-8 -*-
# @Time : 2018/3/4 13:07
# @File : imagespro.py
# @Software: PyCharm
import os
import os.path
from PIL import Image
from skimage import transform,data
import shutil #shutil是一个高级文件操作的包,实现了文件及文件集合复制与删除的功能
# 批量处理文件夹中图片
class imgPro():
'''
批量重命名文件夹中的图片文件
'''
def __init__(self):
self.path = r'C:/Users/images'
#修改文件名(从0开始排序)
def rename(self):
print('修改文件名(从0开始排序)')
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), str(i) + '.jpg')
try:
os.rename(src, dst)
print ('converting %s to %s ...' % (src, dst))
i = i + 1
except:
continue
print ('total %d to rename & converted %d jpgs' % (total_num, i))
# 每张图片每旋转30度,生成一张图片
def rotate(self):
print('每张图片每旋转30度,生成一张图片')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
# i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
for angle in range(30,360,30):
dst = os.path.join(os.path.abspath(self.path), str(item)[:-4] + '_' + str(angle) + '.jpg')
try:
img = Image.open(src)
img = img.rotate(angle)
img.save(dst)
print ('converting %s to %s ...' % (src, dst))
i = i + 1
except Exception as e:
print("rotate error = ",e)
continue
angle = angle + 30
print ('total %d to rename & converted %d jpgs' % (total_num, i))
# 图像缩放
def resize(self,w,h):
print('图像缩放')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item) # 路径+文件名
# for angle in range(30,360,30):
dst = os.path.join(os.path.abspath(self.path), str(item)[:-4] + '_resize' + '.jpg')
try:
img = Image.open(src)
img = img.resize((w, h))
img.save(dst)
print ('resize %s to %s ...' % (src, dst))
i = i + 1
except Exception as e:
print("resize error = ",e)
continue
print ('total %d to resize & converted %d jpgs' % (total_num, i))
# 图像缩放后删除原图
def resize(self,w,h):
print('图像缩放后删除原图')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item) # 路径+文件名
# for angle in range(30,360,30):
dst = os.path.join(os.path.abspath(self.path), str(item)[:-4] + '_resize' + '.jpg')
try:
img = Image.open(src)
new = img.resize((w, h))
new.save(dst)
img.close()
print ('resize %s to %s ...' % (src, dst))
i = i + 1
except Exception as e:
print("resize error = ",e)
continue
# angle = angle + 30
print ('total %d to resize & converted %d jpgs' % (total_num, i))
# 获取图片总数
def getsum(self):
print('获取图片总数')
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 0
for item in filelist:
if (item.endswith('.jpg') or item.endswith('.png')):
i = i + 1
return i
# 删除文件夹下所有文件
# def delallfile(self):
# print('删除文件夹下所有文件')
# filelist = os.listdir(self.path)
# total_num = len(filelist)
# if total_num == 0:
# print("not find files!")
# return
# for i in filelist:
# src = os.path.join(self.path, i) # 取文件绝对路径
# if os.path.isfile(src):
# os.remove(src)
# else:
# delallfile(src)
# 删除文件夹下所有文件(包括文件夹),保留该文件夹
def delallfile1(self):
print('删除文件夹下所有文件(包括文件夹),保留该文件夹')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
for i in filelist:
src = os.path.join(self.path, i) # 取文件绝对路径
if os.path.isfile(src):
os.remove(src)
else:
shutil.rmtree(src) # 删除文件夹和文件夹里面的所有文件
# 删除文件夹下所有jpg图片
def delalljpg(self):
print('删除文件夹下所有jpg图片')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item) # 路径+文件名
if os.path.isfile(src):
os.remove(src)
# 删除文件夹下w*h以外的jpg图片
def delallwhjpg(self,w,h):
print('删除文件夹下w*h以外的jpg图片')
filelist = os.listdir(self.path)
total_num = len(filelist)
if total_num == 0:
print("not find files!")
return
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item) # 路径+文件名
if os.path.isfile(src):
im = Image.open(src)
wx, wh = im.size
im.close()
if (wx != w) and (wh != h):
os.remove(src)
# 修改文件后缀为.jpg
def setpostfix(self):
print('修改文件后缀')
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 0
for item in filelist:
portion = os.path.splitext(item) # 将文件名拆成名字和后缀
new = portion[0] + ".jpg"
os.rename(item, new) # 修改
return i
# 批量水平翻转图片transpose
def transpose(self):
print('批量水平翻转图片transpose')
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 0
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), 'transpose' + '.jpg')
try:
img = Image.open(src)
img = img.transpose(Image.FLIP_LEFT_RIGHT)
img.save(dst)
except:
continue
print ('transpose worked')
if __name__ == '__main__':
demo = imgPro()
demo.path = r'C:/Users/images'
# demo.rename() # 从0开始排序命名
# demo.resize(300,300) # 缩放 300*300
# demo.delalljpg() # 删除全部jpg图片
# demo.delallfile1() # 删除全部文件
转载来源:http://blog.csdn.net/wyx100/article/details/79439301
相关文章推荐
- python3.6深度学习图片集处理项目源代码(为cnn等准备图片集合,批量生成、删除、改名、旋转、调整大小)
- 提供下载:批量图片压缩(生成缩略图或指定大小图片)及文件批量改名器
- java删除指定路径下所有的文件, 及该文件夹里的所有文件夹,不包括该文件夹
- python 查找文件夹下的指定部分路径下的所有文件内匹配的字符 包括子文件夹下的文件
- 删除指定文件夹中除保留的文件外的所有文件批处理 删除指定文件夹下的空文件夹,包括子目录批处理
- Python 批量删除文件夹下面指定类型的所有文件
- 上传文件细节处理问题(包括中文乱码、限制文件大小、显示上传速度、删除临时文件,随机生成文件夹等)
- Python 批量删除文件夹下面指定类型的所有文件
- 删除指定路径根目录所有文件-python
- 删除指定路径根目录所有文件-python
- python实现批量删除某个路径下所有的某种文件
- 日志源代码,删除指定路径所有文件夹名,并创建新的日志文件
- Python列出当前目录下所有含有指定名称的文件(包括路径)
- shell编程: 获得目录下(包括子目录)所有文件名,路径和文件大小
- 批量删除当前目录下所有文件夹中的指定文件
- java web项目中上传文件、图片、freemarker生成静态页面路径问题
- python 删除某个路径下所有文件及模块调用注意事项
- windows api 实现删除指定目录下的所有文件(包括子文件夹下的所有文件)
- qt删除指定文件夹下所有内容,包括文件夹、文件
- Python_删除/创建指定目录及其下所有子目录的文件,该文件记录当前文件夹的内容