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) #原路径存放
