OpenCV(四十八):读取视频和保存视频

OpenCV(Open Source Computer Vision Library)是一个功能强大的开源计算机视觉库,它提供了丰富的功能,包括读取和保存视频。下面分别演示如何使用OpenCV来读取视频和保存视频。

1. 读取视频:

OpenCV中我们要获取一个视频,需要创建一个VideoCapture对象,指定你要读取的视频文件:

  1. 创建读取视频的对象

    复制代码
    cap = cv.VideoCapture(filepath)

    参数:
    filepath: 视频文件路径

要读取视频,首先需要打开视频文件,然后逐帧读取视频的每一帧。以下是一个示例代码,演示如何使用OpenCV读取视频:

复制代码
   //打开视频文件
    VideoCapture capture;
    Mat frame;
    frame=capture.open(path);//path为视频文件的路径
    //检查是否成功打开视频
    if(!capture.isOpened()){
        LOGD("无法打开视频");
    }
    //循环读取每一帧frame
    int i=0;
    while(capture.read(frame)) {
      //在这里可以对每一帧frame进行处理
        imwrite("/sdcard/DCIM/frame"+to_string(i)+".png",frame);//保存视频每一帧到相册
         i++;
    }

2. 保存视频:

在OpenCV中保存视频使用的是VedioWriter对象,在其中指定输出文件的名称,如下所示:

1.创建视频写入的对象

out = cv2.VideoWriter(filename,fourcc, fps, frameSize)

参数:

  • filename:视频保存的位置
  • fourcc:指定视频编解码器的4字节代码
  • fps:帧率
  • frameSize:帧大小

要保存视频,首先需要创建一个视频写入对象,然后逐帧将图像写入该对象。以下是一个示例代码,演示如何使用OpenCV保存视频:

复制代码
    //打开视频文件   
   VideoCapture capture;
    Mat frame;
    frame=capture.open(path);
    if(!capture.isOpened()){
        LOGD("无法打开视频");
    }
   //获取视频基本信息
    int frame_width = static_cast<int>(capture.get(cv::CAP_PROP_FRAME_WIDTH));
    int frame_height = static_cast<int>(capture.get(cv::CAP_PROP_FRAME_HEIGHT));
    //定义视频编码器及其参数
    double fps = capture.get(cv::CAP_PROP_FPS);
    int codec=VideoWriter::fourcc('M','J','P','G');
   //设置新的视频的路径和参数
    VideoWriter output; 
output.open("/sdcard/DCIM/framevideo4804.avi",CAP_OPENCV_MJPEG,codec,fps,cv::Size(frame_width, frame_height),true);
   //判断是否创建出新的视频文件 
   if (!output.isOpened())
    {
        LOGD("无法创建输出视频文件!");
        return ;
    }
    int i=0;
    while(capture.read(frame)) {

         //在这里可以对视频的每一帧frame进行处理

        // 将处理后的帧写入输出到新的视频文件中
        output.write(frame);

    }
相关推荐
文火冰糖的硅基工坊32 分钟前
[人工智能-大模型-125]:模型层 - RNN的隐藏层是什么网络,全连接?还是卷积?RNN如何实现状态记忆?
人工智能·rnn·lstm
IT909036 分钟前
c#+ visionpro汽车行业,机器视觉通用检测程序源码 产品尺寸检测,机械手引导定位等
人工智能·计算机视觉·视觉检测
Small___ming1 小时前
【人工智能数学基础】多元高斯分布
人工智能·机器学习·概率论
渔舟渡简1 小时前
机器学习-回归分析概述
人工智能·机器学习
王哈哈^_^1 小时前
【数据集】【YOLO】目标检测游泳数据集 4481 张,溺水数据集,YOLO河道、海滩游泳识别算法实战训练教程。
人工智能·算法·yolo·目标检测·计算机视觉·分类·视觉检测
桂花饼1 小时前
Sora 2:从视频生成到世界模拟,OpenAI的“终极游戏”
人工智能·aigc·openai·sora 2
wwlsm_zql2 小时前
荣耀YOYO智能体:自动执行与任务规划,开启智能生活新篇章
人工智能·生活
科学计算技术爱好者2 小时前
未来已来:AI 如何在 3 年内重塑工作、教育与生活
人工智能·ai
这张生成的图像能检测吗2 小时前
(论文速读)EgoLife:走向自我中心的生活助手
人工智能·计算机视觉·生活·视觉语言模型
Godspeed Zhao2 小时前
自动驾驶中的传感器技术24.2——Camera(17)
人工智能·机器学习·自动驾驶