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



经验分享 程序员 微信小程序 职场和发展