OpenCV3 C++ 实现视频读取与写入完整示例

青禾
青禾
发布时间:2026-10-13| 5人浏览过
原创

本文介绍如何使用OpenCV3和C++进行视频读取与写入操作。通过VideoCapture类打开视频文件或调用摄像头获取帧,并利用VideoWriter类将处理后的帧写入新视频文件。示例代码展示了如何获取视频宽高、设置编码格式及帧率,并包含简单的图像预处理步骤,帮助开发者快速掌握视频流处理的核心方法。

视频读取基础

视频读取

在OpenCV中,视频读取主要依赖于VideoCapture类。该类提供了打开视频源并逐帧获取图像数据的功能。以下代码演示了如何初始化VideoCapture对象并打开指定的视频文件。


#include<iostream>
#include<opencv2/opencv.hpp>
using namespace cv;

int main()
{
  VideoCapture capture;
  Mat frame;
  frame= capture.open("E:/image/a1.avi");
  if(!capture.isOpened())
  {
    printf("can not open ...\n");
    return -1;
  }
  namedWindow("output", CV_WINDOW_AUTOSIZE);

  while (capture.read(frame))
  {
    imshow("output", frame);
    waitKey(10);
  }
  capture.release();
  return 0;
}

当capture.open()函数的参数设置为0时,表示从默认摄像头设备读取实时视频流,而非本地文件。


frame= capture.open(0);

视频写入实现

视频写入

若需通过摄像头捕获视频并保存,首先需使用capture.get(CV_CAP_PROP_FRAME_WIDTH)和capture.get(CV_CAP_PROP_FRAME_HEIGHT)获取当前视频帧的分辨率(宽度和高度)。随后,创建一个VideoWriter类的实例对象writer,用于指定输出文件路径、编码格式、帧率及视频尺寸,从而执行视频写入操作。

在正式写入视频前,通常需要对获取的帧进行必要的预处理或简单处理,以优化最终输出的视频质量或满足特定格式要求。


#include<iostream>
#include<opencv2/opencv.hpp>
using namespace cv;

int main()
{
  VideoCapture capture;
  capture.open(0);
  if(!capture.isOpened())
  {
    printf("can not open ...\n");
    return -1;
  }

  Size size = Size(capture.get(CV_CAP_PROP_FRAME_WIDTH), capture.get(CV_CAP_PROP_FRAME_HEIGHT));
  VideoWriter writer;
  writer.open("E:/image/a2.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, size, true);

  Mat frame, gray;
  namedWindow("output", CV_WINDOW_AUTOSIZE);

  while (capture.read(frame))
  {
    //转换为黑白图像
    cvtColor(frame, gray, COLOR_BGR2GRAY); 
    //二值化处理 
    threshold(gray, gray, 0, 255, THRESH_BINARY | THRESH_OTSU);
    cvtColor(gray, gray, COLOR_GRAY2BGR);
    imshow("output", gray);
    writer.write(gray);
    waitKey(10);
  }

  waitKey(0);
  capture.release();
  return 0;
}

以上即为OpenCV3结合C++实现视频读取与写入的完整流程。希望上述内容能为您提供参考,欢迎继续支持本站获取更多技术分享。

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

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 算法库。