ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

将视频提取为图片

2022-07-31 08:33:43  阅读:213  来源: 互联网

标签:视频 提取 frame list frequency video path type 图片


import cv2
import os
import threading

# 获取所有文件
def getAllFiles(fire_dir):
    filepath_list = []
    for root,folder_names,file_names in os.walk(fire_dir):
        for file_name in file_names:
            file_path = root+os.sep+file_name
            filepath_list.append(file_path)
            print(file_path)
    print(filepath_list)
    return filepath_list

def save_image(image, addr, num, type=".jpg"):
    address = addr + "img_" + str(num) + type
    cv2.imwrite(address, image)

def video_to_frames(video_path, frame_frequency=1,pic_type=".png"):
    wenjianhouzui =  os.path.splitext(video_path)[-1]

    fi = 0

    # 提取视频的频率,每1帧提取一个
    frame_frequency = frame_frequency

    outPutDirName = video_path.strip(wenjianhouzui)+"\\"
    # 如果文件目录不存在则创建目录
    if not os.path.exists(outPutDirName):
        os.makedirs(outPutDirName)

    # 读取视频帧
    camera = cv2.VideoCapture(video_path)

    while True:
        fi = fi + 1
        res, image = camera.read()
        if not res:
            print('not res , not image')
            break
        # 按照设置间隔存储视频帧
        if fi % frame_frequency == 0:
            save_image(image, addr=outPutDirName, num=fi, type=pic_type)
            print('save image: ', fi)

    print('图片提取结束')
    # 释放摄像头设备
    camera.release()

def getAllAndZhuanHua(src,frame_frequency=1):
    filepath_list = getAllFiles(src)
    for f in filepath_list:
        print(f)
        video_to_frames(video_path=f, frame_frequency=frame_frequency)


def getAllAndZhuanHuaDuoXiancheng(src,frame_frequency=1,pic_type=".png"):
    filepath_list = getAllFiles(src)
    for f in filepath_list:
        print(f)
        threading.Thread(target=video_to_frames, args=(f, frame_frequency,pic_type)).start()



if __name__ == '__main__':
    src = r"E:\englishpic\xintu\video"     #路径不要有中文
    frame_frequency = 1000
    pic_type = ".png"
    getAllAndZhuanHuaDuoXiancheng(src=src, frame_frequency=frame_frequency,pic_type=pic_type)

 

标签:视频,提取,frame,list,frequency,video,path,type,图片
来源: https://www.cnblogs.com/jingzaixin/p/16536392.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有