Python OpenCV实现视频片段截取与保存

顾星河
顾星河
发布时间:2026-10-13| 6人浏览过
原创

本文介绍使用Python和OpenCV库进行视频截取与保存的方法。通过设定起止时间或帧数,程序可读取视频文件,根据指定时间段筛选图像帧,并将其编码保存为新的视频文件。文中提供了完整的函数实现代码,包括参数设置、帧率获取及循环处理逻辑,供开发者参考学习。

Python OpenCV视频截取与保存概述

本文详细讲解了如何利用Python结合OpenCV库完成视频的截取与保存操作。文中提供了详细的示例代码,旨在为相关学习或实际工作提供有价值的参考。

在进行图像处理任务前,通常需要对原始数据进行筛选。针对视频数据,核心需求往往是从长视频中提取出特定的一个或多个片段。

整体实现逻辑较为直观:通过定义视频截取的起始和结束时间(或对应的帧数),程序将提取该时间段内的所有图像帧,并将其合成为一个新的视频文件。

视频截取代码实现

具体实现代码如下所示。


"""
【函数名称】 截取视频 
【参数】 输入参数 视频文件名称
【详细介绍】 输入不同时间段 进行截取拼接
【创建日期】 20191128 by wangxioabei
【修改日期】 NOTE.1: 
"""
def CutVideoFromFile(video_file_name,windows_name = 'videoShowing'):
  cap = cv2.VideoCapture(video_file_name) # 打开视频文件
  # 需要明确视频保存的格式
  fourcc = cv2.VideoWriter_fourcc(*'XVID')
  fps = cap.get(cv2.CAP_PROP_FPS)
  print('帧率:%d'%fps)
  size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
  out = cv2.VideoWriter('BeltTear.avi',fourcc,fps, size)
  SaveTime = [[38*60+38,39*60+59],[42*60+54,44*60+11],[47*60+8,48*60+24],[51*60+20,52*60+39]]
  print(SaveTime[0][0])
  now_frame = 0
  while (cap.isOpened()):
    ret, frame = cap.read() # 捕获一帧图像
    img_h, img_w, img_ch = frame.shape
    # print(frame.shape)
    if ret:
      # 【1】 不能直接将灰度或二值化的图片保存成视频,需要转换成彩色
      if img_ch==1:
        frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)
      # cv2.imshow(windows_name, frame)
      for i in range(len(SaveTime)):
        if now_frame > SaveTime[i][0]*fps and now_frame < SaveTime[i][1]*fps:
          out.write(frame)
          print(now_frame)
      now_frame += 1
      if now_frame > SaveTime[2][1]*fps:
        break;
      k = cv2.waitKey(1) & 0xFF
      if k == 27:
        break
      # cv2.waitKey(25)
    else:
      break
  cap.release()
  out.release()
  cv2.destroyAllWindows()

代码中的SaveTime列表用于存储截取的时间段,内部嵌套的列表分别代表起始和结束时间(单位:秒)。该列表也可作为参数传入,从而将截取逻辑封装为通用的函数。

以上内容即为本文的全部介绍,希望能为读者的学习带来帮助,同时也欢迎大家继续关注和支持本站后续的技术分享。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。