cv2 python 图片的批量处理
最近要生成大批量图片来进行样本准备,处理图片除了用ffmpeg外,cv2也是个不错的工具。
通过cv2 生成大量图片。
炸弹,单个目录生成了40G的图片,所有图片放入一个输出目录存在读取问题,最终格式化了磁盘。
# encoding:utf-8 import os import cv2 as cv import imghdr import time import os #扫描输出图片列表 def eachFile(filepath): list = [] pathDir = os.listdir(filepath) for allDir in pathDir: child = os.path.join(filepath, allDir) list.append(child) return list #对图片进行变形操作 def picResize(filePath_bak): files = eachFile(filePath) for file in files: if imghdr.what(file) in (bmp, jpg, png, jpeg): #判断图片的格式 img = cv.imread(file) #读取图片 for i in range(120, 190, 5): for j in range(120, 190, 5): res = cv.resize(img, (i, j), interpolation=cv.INTER_CUBIC) #借助于resize方法对图片进行处理 cv.imwrite( filePath_bak + str(i) + str(j) + _ + str(long(int(round(time.time() * 1000)))) + ".jpg", res) #写入目录 if __name__ == __main__: filePath = r"C:UsersAdministratorPycharmProjectsOpenAPIdatasexy_jpg\" filePath_bak = r"D: mp\" picResize(filePath_bak)
下面函数为批量修改当前目录下面所有图片尺寸,方便界面展示
def img_resize(filepath): for parent, dirnames, filenames in os.walk(filepath): # 三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字 for filename in filenames: # 输出文件信息 img_path = os.path.join(parent, filename) # 输出文件路径信息 filePath = unicode(img_path, utf8) # 中文编码 print img_path img=cv.imread(img_path) # 读取图片 res=cv.resize(img,(200,120),interpolation=cv.INTER_AREA ) #改变图片尺寸 cv.imwrite(img_path,res) #原路径存放