OpenCV2实现摄像头视频捕获与文件写入

一只小鹿
一只小鹿
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍使用OpenCV2从摄像头获取视频帧并保存为视频文件的方法。核心步骤包括初始化VideoCapture读取帧,利用VideoWriter指定路径、帧率及宽高进行写入。特别指出当编解码参数设为-1时,程序运行会弹出对话框供用户手动选择编码格式,且目标目录必须预先存在。

以下展示一段基于OpenCV2库编写的示例代码。

该代码的主要功能是从连接的摄像头中实时获取视频帧,并将这些帧数据写入到指定的视频文件中。

在操作过程中需注意,视频文件保存的目标路径必须真实存在,例如D:/images/1.avi,其中images目录需提前创建。在调用VideoWriter类对象的open成员函数时,若将编解码方式参数设置为-1,程序在运行时会弹出对话框,要求用户手动选择具体的编解码方式。

#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
#include<opencv2\core\core.hpp>

int main()
{
 //打开摄像头
 cv::VideoCapture captrue(0);
 //视频写入对象
 cv::VideoWriter write;
 //写入视频文件名
 std::string outFlie = "D:/1.avi";
 //获得帧的宽高
 int w = static_cast<int>(captrue.get(CV_CAP_PROP_FRAME_WIDTH));
 int h = static_cast<int>(captrue.get(CV_CAP_PROP_FRAME_HEIGHT));
 cv::Size S(w, h);
 //获得帧率
 double r = captrue.get(CV_CAP_PROP_FPS);
 //打开视频文件,准备写入
 write.open(outFlie, -1, r, S, true);

 //打开失败
 if (!captrue.isOpened())
 {
  return 1;
 }
 bool stop = false;
 cv::Mat frame;
 //循环
 while (!stop)
 {
  //读取帧
  if (!captrue.read(frame))
   break;
  cv::imshow("Video", frame);
  //写入文件
  write.write(frame);
  if (cv::waitKey(10) > 0)
  {
   stop = true;
  }
 }
 //释放对象
 captrue.release();
 write.release();
}

以上关于OpenCV2从摄像头获取帧并写入视频文件的方法分享完毕,希望能为读者提供有效的参考,也欢迎大家继续支持本站获取更多技术内容。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表