使用 opencv-python 提取视频每一帧的图片

计算机视觉是指用摄影机和计算机代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图像处理,用计算机处理成为更适合人眼观察或传送给仪器检测的图像,其任务有图像形成、图像处理、图像提取和图像的三维推理,而目标识别和面部识别也是很重要的研究领域。

OpenCV 的全称是 Open Source Computer Vision Library,是一个跨平台的计算机视觉库,其基于C/C++,支持 Linux/Windows/MacOS/Android/iOS,并提供了 Python,Matlab 和 Java 等语言的接口。

如何使用 opencv-python 提取视频每一帧的图片?

  • 编程语言:Python

  • 所需库:cv2

获取视频(创建 VideoCapture 对象)

使用 cv2.VideoCapture

Args:

  • filename – 文件路径;

  • device – 视频设备id ,若只有一个摄像头可以填 0,表示打开默认摄像头;

vc = cv2.VideoCapture(filename)
检验 VideoCapture 对象是否创境成功

使用 VideoCapture 对象的 isOpened 方法

# determine whether to open normally
if vc.isOpened():
    ret, frame = vc.read()
else:
    ret = False

若成功,返回 True。

  • 28
    点赞
  • 137
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
你可以使用OpenCV库来提取文件夹中所有视频的第一秒最后一帧和最后一秒第一帧,并将它们保存到新的文件夹。以下是一个示例代码,可以帮助你完成这个任务: ```python import cv2 import os def extract_frames(input_file, output_folder): # 打开视频文件 cap = cv2.VideoCapture(input_file) # 获取视频的帧率和总帧 fps = cap.get(cv2.CAP_PROP_FPS) total_frames = cap.get(cv2.CAP_PROP_FRAME_COUNT) # 计算第一秒和最后一秒的帧号 first_frame = int(fps) last_frame = int(total_frames - fps) # 设置视频读取的帧号 cap.set(cv2.CAP_PROP_POS_FRAMES, first_frame) # 读取第一秒最后一帧 ret, frame = cap.read() output_file = os.path.join(output_folder, f"{os.path.splitext(input_file)[0]}_first_frame.jpg") cv2.imwrite(output_file, frame) # 设置视频读取的帧号 cap.set(cv2.CAP_PROP_POS_FRAMES, last_frame) # 读取最后一秒第一帧 ret, frame = cap.read() output_file = os.path.join(output_folder, f"{os.path.splitext(input_file)[0]}_last_frame.jpg") cv2.imwrite(output_file, frame) # 释放视频对象 cap.release() def extract_frames_from_folder(folder_path, output_folder): # 遍历文件夹中的所有文件 for root, dirs, files in os.walk(folder_path): for file in files: # 检查文件是否为视频文件 if file.endswith(('.mp4', '.avi', '.mkv')): input_file = os.path.join(root, file) extract_frames(input_file, output_folder) # 定义输入文件夹和输出文件夹的路径 input_folder = 'path/to/input/folder' output_folder = 'path/to/output/folder' # 调用函提取视频帧 extract_frames_from_folder(input_folder, output_folder) ``` 请确保已经安装了`opencv-python`库,并将代码中的`input_folder`和`output_folder`变量替换为实际的文件夹路径。提取的帧将以`.jpg`格式保存在输出文件夹中,并使用每个视频文件的基本文件名加上`_first_frame.jpg`和`_last_frame.jpg`后缀命名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值