Python 视频提取图片,图片重命名再放到同一文件夹

本篇博客可谓造福人类,非常方便,拿走直接用!

1. 从文件夹的视频中截取图片

       大约几百个视频,输出的结果就是一个视频截取的文件再一个文件夹中,几百个视频就是几百个文件夹。

# 视频提取图片
import os
import cv2

def save_img2():  #  提取视频中图片 按照每秒提取   间隔是视频帧率
    video_path = r'/home/dell/mmaction2/data/video/notrain/'  # 视频所在的路径
    f_save_path = '/home/dell/mmaction2/data/image/notrain/'  # 保存图片的上级目录
    videos = os.listdir(video_path) 
    for video_name in videos:  # 依次读取视频文件
        file_name = video_name.split('.')[0]  
        folder_name = f_save_path + file_name 
        os.makedirs(folder_name, exist_ok=True)  
        vc = cv2.VideoCapture(video_path + video_name)  
        fps = vc.get(cv2.CAP_PROP_FPS)  # 获取帧率
        print(fps)  # 帧率可能不是整数  需要取整
        rval = vc.isOpened()  # 判断视频是否打开  返回True或False
        c = 10
        while rval:  # 循环读取视频帧
            rval, frame = vc.read() 
            pic_path = folder_name + '/'
            if rval:

                if (c % round(fps) == 6):  # 每隔fps帧进行存储操作   ,可自行指定间隔
                    cv2.imwrite(pic_path + 'video_' + str(round(c/fps)) + '.png', frame) #存储为图像的命名 video_数字(第几个文件).png
                    print('video_' + str(round(c/fps)) + '.png')
                cv2.waitKey(1)  
                c = c + 0.25 #改间隔截
            else:
                break
        vc.release()
        print('save_success' + folder_name)


save_img2()

2. 不同文件夹的图片转到同一文件夹

这么多文件夹我想把输出的图片都放到同一个文件夹中,名字相应的编号

# 将不同文件夹下的图片转到同一文件夹下
import os
import shutil

src = '/home/dell/mmaction2/data/image/weaktrain/'  #要转化的大文件夹,大文件夹下是很多小文件夹
target = '/home/dell/mmaction2/data/image/weaktrain1/'  #转入的文件夹

path = os.listdir(src)  # 000 001 002
path.sort()
count = len(path)
# print(path)#['000', '001', '002',……‘029’]
num = 1
for root, dirs, files in os.walk(src):
    files.sort()
    for j in range(len(files)):
        if files[j].endswith('png'):
            source = os.path.join(root, files[j])
            shutil.copy(source, os.path.join(target, 'trans_' + str(num).zfill(4) + '.png'))  # 文件命名
            num += 1

你可能感兴趣的:(python,音视频,开发语言)