欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【把视频逐帧转换成图片】

程序员文章站 2022-03-25 14:49:11
...

把视频逐帧转换成图片(也可以间隔几帧)

做AI检测的都知道数据集是是我们的基础,但又十分重要,俗话说:巧妇难为无米之炊,数据集就相当与樵夫手中的“米”,对后期训练的模型的好坏至关重要。做目标检测数据集时,常常需要把视频转换成图片,然后labelImg做数据集。刚开始时我用过软件Free Video to JPG Converterh和ffmpeg等,但是用起来十分不方便。

               **今天分享一下使用Python和Opencv把视频转换成图片**
#-*- coding: utf-8 -*-
import cv2
import os
#把视频逐帧转换成图片     by XTX
def save_img():
    video_path = r'D:/XTX/11/'#11待转视频的路径,不需要具体视频文件名,不过这里注意:视频格式为常见格式“mp4”,“avi” ;要使用“/”,by XTX
    videos = os.listdir(video_path)
    for video_name in videos:
        file_name = video_name.split('.')[0]
        folder_name = video_path + file_name
        os.makedirs(folder_name,exist_ok=True)
        vc = cv2.VideoCapture(video_path+video_name) #读入视频文件   by XTX
        i=0
        c=0
        temp = 4  #设置帧间隔获取截取图片数量:temp = 4时,也就是每间隔4帧截取一张图片
        rval=vc.isOpened()
        while rval:   #循环读取视频帧   by XTX
            c = c + 1
            # str(n).zfill(5)
            rval, frame = vc.read()
            pic_path = folder_name+'/'
            if (c % temp == 0):
                if rval:
                    i=i+1
                    cv2.imwrite(pic_path + str(i).zfill(5) + '.jpg', frame)#str(n).zfill(5)设置保存图片文件名格式(5位)00001~    by XTX
                    cv2.waitKey(1)
                else:
                    rval=rval
                    #break
        vc.release()
        print('save_success')
        print(folder_name)
save_img()
                          如遇到问题欢迎留言!!!