video2imgs 函数

视频转图片操作

pick_imgs 函数

对视频帧筛选,隔帧取样操作

注意:两个代码是独立运行的,pick_imgs 的操作其实是可以合并在 video2imgs 函数里面的,这里的 pick_imgs 函数有点冗余了

import cv2
import numpy as np
import glob
import shutil
import os

def video2imgs(vd_dir,vd_idx):
    video_dir = vd_dir
    
    cap = cv2.VideoCapture(video_dir)
    assert cap.isOpened(),"视频读取失败!"
    
    success = True
    frame_count = 0
    video_index = vd_idx 
    
    while(success):
        success, frame = cap.read()
        
        if success:
            if frame_count % 1 == 0:
                print("读取一帧......")
                '''视频帧保存'''
                '''video_index是视频的id,frame_count帧的id,frame是一帧图像'''
                cv2.imwrite("E:/DL/yolov5/zhi_video/frames/vd%d_%08d.jpg" % (video_index,frame_count), frame)
            frame_count = frame_count + 1
        else:
            print("结束了")
     
    cap.release()
    
def pick_imgs(gap):
    k = 0
    for img_dir in glob.glob("E:/DL/yolov5/litchi_video/images/"+"*.jpg"):
        img_save_dir = os.path.join("E:/DL/yolov5/litchi_video",'imgs')

        k = k+1
        if k == gap:            
            k = 0
            print("---分隔帧采样---")
            if os.path.exists(img_save_dir):
                shutil.copy(img_dir, img_save_dir)       
    
if __name__ == "__main__":
    '''第一个参数是视频路径,第二个参数是视频的id(用于每一帧图片的命名)'''
    video2imgs("E:/DL/yolov5/zhi_video/DJI_0124.MOV",2)   
    '''这是对视频帧做隔帧采样,2是指隔1帧取一张''' 
    #pick_imgs(2)


Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐