Python截取视频帧

方式一

遍历指定目录下所有的视频,按照指定时间间隔截取视频帧

import os
import cv2
import sys
import time

def save_frame(time_in_sec, file_path):
    # 打开视频文件
    cap = cv2.VideoCapture(file_path)
    # 获取视频的帧率
    fps = cap.get(cv2.CAP_PROP_FPS)
    # 获取视频的总帧数
    total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    duration = total_frames / fps
    num = 0
    while(num < duration):
        num = num + time_in_sec
        # 计算指定时间对应的帧数
        frame_number = int(num * fps)

        # 设置视频的当前帧
        cap.set(cv2.CAP_PROP_POS_FRAMES, frame_number)

        # 读取当前帧
        ret, frame = cap.read()
        if ret:
            timestamp = int(time.time())  # 获取当前时间戳
            save_path = f"img\\frame_{
     frame_number}_{
     timestamp}.jpg"
            # 保存当前帧为图片
            cv2.imwrite(save_path, frame)
            print("保存成功:" + save_path)
        else:
            print("读取视频帧失败")

    # 关闭视频文件
    cap.release()

def traverse_directory(directory):
    for root, dirs, files in os.walk(directory):
        for file in files:
            video_path = os.path.join(root, file)
            print(video_path)
            save_frame(int(sys.argv[1]), video_path)

# 遍历当前目录
traverse_directory('E:\pro_2_jianke\现场视频数据')

print("运行成功")

执行方式

python3 文件名.py  时间间隔

方式二

固定视频,手动输入指定时间点截取视频帧

import os
import cv2
import sys
import time


def save_frame(time_in_sec, file_path):
    # 打开视频文件
    cap = cv2.VideoCapture(file_path)

    # 检查视频文件是否成功打开
    if not cap.isOpened():
        print("无法打开视频文件")
        return

    # 获取视频的帧率
    fps = cap.get(cv2.CAP_PROP_FPS)

    # 计算指定时间对应的帧数
    frame_number = int(time_in_sec * fps)

    # 设置视频的当前帧
    cap.set(cv2.CAP_PROP_POS_FRAMES, frame_number)

    # 读取当前帧
    ret, frame = cap.read()
    if ret:
        timestamp = int(time.time())  # 获取当前时间戳
        save_path = f"img/1_{
     frame_number}.jpg"
        # 保存当前帧为图片
        cv2.imwrite(save_path, frame)
        print("保存成功:" + save_path)
    else:
        print("读取视频帧失败")
    # 关闭视频文件
    cap.release()


# 遍历当前目录
file_path = 'E:\pro_2_jianke\\vedio\FullScreen_0_20231229T084812Z_20231229T095535Z.mp4'
arr = [2, 115, 125, 853, 915, 972, 1076, 1111, 1200, 1319, 1430, 1453, 1800,
       200, 302, 304, 306, 308, 360, 430, 450, 457, 478, 660, 690, 797]
for item in arr:
    save_frame(item, file_path)

print("运行成功")

直接执行文件

相关推荐

  1. Python截取视频

    2024-02-22 19:26:02       26 阅读
  2. 视频截取指定图片

    2024-02-22 19:26:02       40 阅读
  3. 截取视频第一当做封面

    2024-02-22 19:26:02       11 阅读
  4. js截取视频第一截取图片不会是黑色的)

    2024-02-22 19:26:02       35 阅读
  5. python实现切割mp4视频,按照指定要求截取视频

    2024-02-22 19:26:02       39 阅读
  6. python视频转化为图片并保存

    2024-02-22 19:26:02       15 阅读
  7. python脚本将视频为图像数据集

    2024-02-22 19:26:02       9 阅读
  8. python视频进行处理以及裁减部分区域

    2024-02-22 19:26:02       8 阅读
  9. ffmpeg 实用命令 -- 截取视频

    2024-02-22 19:26:02       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-22 19:26:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-22 19:26:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-22 19:26:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-22 19:26:02       18 阅读

热门阅读

  1. JQuery简介与解析

    2024-02-22 19:26:02       25 阅读
  2. 【工作记录】AQS学习笔记

    2024-02-22 19:26:02       31 阅读
  3. Git基本用法教程

    2024-02-22 19:26:02       26 阅读
  4. Elasticsearch 去重后求和

    2024-02-22 19:26:02       31 阅读
  5. 【C++】封装

    2024-02-22 19:26:02       29 阅读
  6. SouthLeetCode-打卡24年02月第2周

    2024-02-22 19:26:02       31 阅读
  7. Web服务器基础介绍

    2024-02-22 19:26:02       26 阅读