博客
关于我
opencv中读写视频
阅读量:791 次
发布时间:2023-02-23

本文共 1449 字,大约阅读时间需要 4 分钟。

OpenCV 视频读写实践指南

在 OpenCV 开发中,视频的读写涉及重要的编解码器(codec)配置和文件格式选择。本文将详细介绍 OpenCV 读视频和写视频的关键知识,帮助开发者顺利完成视频操作。

1. 编解码器的重要性

视频文件的读写能力核心在于编解码器的支持。编解码器决定了视频文件的压缩格式和解压方式。例如,常见的编解码器包括 MJPG、XVID、DIVX 等。编解码器的选择直接影响视频的读写效果,某些编解码器可能支持某些视频格式而不支持另一些。因此,在读写视频时,必须确保所选编解码器与目标视频格式兼容。

2. 读取视频

在 OpenCV 中,VideoCapture 类用于读取视频文件或摄像头流。该类支持从文件或设备中读取图像,具备高效的读取机制。

读取视频的关键点

  • 打开视频源:可以通过 VideoCapture 的构造函数或 open() 方法打开视频文件或摄像头。

    VideoCapture cap;cap.open("video.mp4"); // 从文件读取cap.open(0);             // 使用摄像头
  • 读取图像帧:使用 >> 运算符或 read() 方法读取单帧。

    Mat frame;cap >> frame; // 读取一帧
  • 处理图像:根据需要对图像进行处理,例如灰度化、边缘检测等。

    cvtColor(frame, gray, CV_BGR2GRAY); // 灰度化Canny(gray, edges, 0, 30, 3);     // 边缘检测
  • 释放资源:确保在程序终止时释放视频资源,避免占用内存。

    cap.release();
  • 3. 写入视频

    VideoWriter 类用于将图像序列写入视频文件。写视频时需要配置编解码器、帧率和视频尺寸等参数。

    写入视频的关键点

  • 创建 VideoWriter 实例:指定文件名、编解码器和参数。

    VideoWriter writer("output.mp4", CV_FOURCC('M','J','P','G'), 25, Size(320, 240));
  • 检查视频写入状态:确保编解码器支持目标格式。

    if (!writer.isOpened()) {    // 生成错误信息并退出程序    cerr << "无法创建视频文件.\n";    return -1;}
  • 写入图像帧:使用 << 运算符或 write() 方法将图像写入视频。

    for (int i = 0; i < 100; i++) {    Mat frame = Scalar::all(0); // 创建黑色背景    char text[128];    sprintf_s(text, "%d", i);    putText(frame, text, Point(s.width/3, s.height/3), FONT_HERSHEY_SCRIPT_SIMPLEX, 3, Scalar(0,0,255), 3, 8);    writer << frame;}
  • 释放资源:在程序终止时关闭视频文件。

    writer.release();
  • 总结

    视频操作是 OpenCV 开发中的核心功能之一。通过合理选择编解码器、正确使用 VideoCaptureVideoWriter 类,可以实现视频的读取和写入。开发者应注意视频格式与编解码器的兼容性,并在程序中正确释放视频资源,避免因资源泄漏导致的问题。

    转载地址:http://lrsfk.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | OpenCV如何读取仪表中的指针刻度
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(一) :直接拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(三):基于特征匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(二) :基于模板匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(四):基于Stitcher类拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | PaddleOCR 2.9 发布, 正式开源文本图像智能分析利器
    查看>>
    OpenCV与AI深度学习 | SAM2(Segment Anything Model 2)新一代分割一切大模型介绍与使用(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | T-Rex Label !超震撼 AI 自动标注工具,开箱即用、检测一切
    查看>>
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | YOLOv10在PyTorch和OpenVINO中推理对比
    查看>>
    OpenCV与AI深度学习 | YOLOv11来了:将重新定义AI的可能性
    查看>>
    OpenCV与AI深度学习 | YOLOv8自定义数据集训练实现火焰和烟雾检测(代码+数据集!)
    查看>>
    OpenCV与AI深度学习 | YOLOv8重磅升级,新增旋转目标检测,又该学习了!
    查看>>
    OpenCV与AI深度学习 | 一文带你读懂YOLOv1~YOLOv11(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)
    查看>>
    OpenCV与AI深度学习 | 什么是 COCO 数据集?
    查看>>
    OpenCV与AI深度学习 | 低对比度缺陷检测应用实例--LCD屏幕脏污检测
    查看>>
    OpenCV与AI深度学习 | 使用 MoveNet Lightning 和 OpenCV 实现实时姿势检测
    查看>>
    OpenCV与AI深度学习 | 使用 OpenCV 创建自定义图像滤镜
    查看>>