利用opencv提供的方法,从摄像头获取视频,并保存为.avi格式文件。

win8.1,opencv248,vs2013下测试

#include<opencv\cv.h>
#include<highgui.h>
#include<iostream>
using namespace cv;
using namespace std; int main()
{
CvCapture * capture = cvCaptureFromCAM(0);
IplImage * frame = NULL;
CvVideoWriter* video = NULL; int i = 0; // 视频存储 相应参数 设置
int fps = 10; //帧率
int codec = CV_FOURCC('D','I','V','X'); //视频编码 (MPEG-4) if (!capture) //如果不能打开摄像头给出警告
{
cout << "Can not open the camera." << endl;
return -1;
}
else
{
i = 1;
frame = cvQueryFrame(capture); //首先取得摄像头中的一帧
//创建CvVideoWriter对象并分配空间
//保存的文件名为camera.avi,视频编码为MPEG-4,大小就是摄像头视频的大小,帧频率是fps=10
video = cvCreateVideoWriter("camera.avi", codec, fps, cvSize(frame->width, frame->height), 1); if (video) //如果能创建CvVideoWriter对象则表明成功
{
cout << "VideoWriter has created." << endl; cvNamedWindow("Camera Video", 1); //新建一个窗口
while (frame = cvQueryFrame(capture))//从CvCapture中获得一帧
{
if (!frame)
{
cout << "Can not get frame from the capture." << endl;
break;
} if (cvWriteFrame(video, frame))//判断是否写入成功,如果返回的是1,表示写入成功
{
if (i%fps == 0)
cout << i / fps << "s" << endl;
cout << 1 << " ";
} ++i; cvShowImage("Camera Video", frame); //显示视频内容的图片 if (cvWaitKey(1000 / fps)>0) break; //有其他键盘响应,则退出
if (i >= fps * 60) break;
}
}
else{
cout << "can not create VideoWriter." << endl;
}
cvReleaseVideoWriter(&video);
cvReleaseCapture(&capture);
cvDestroyWindow("Camera Video");
}
return 0;
}

opencv保存视频的更多相关文章

  1. Opencv保存摄像头视频&&各种编码器下视频文件占用空间对比

    打开视频文件或摄像头视频需要使用Opencv中的VideoCapture类,保存视频或摄像头视频到本地磁盘,需要使用Opencv中的VideoWriter类,使用都很简单,这篇文章就记录一下Video ...

  2. opencv入门系列教学(二)图像入门:读取、展示并保存视频

    一.从相机读取视频 通常情况下,我们必须用摄像机捕捉实时画面.让我们从摄像头捕捉一段视频(我使用的是我笔记本电脑内置的网络摄像头) ,将其转换成灰度视频并显示出来.        要捕获视频,我们需要 ...

  3. Opencv读取视频

    CvCapture 是一个结构体,用来保存图像捕获所需要的信息. opencv提供两种方式从外部捕获图像 一种是从摄像头中, 一种是通过解码视频得到图像. 两种方式都必须从第一帧开始一帧一帧的按顺序获 ...

  4. 使用opencv显示视频的方法

    下面对使用opencv显示视频做一个简单的记录.当然,网上这方面的资料已经数不胜数了,我只是将其简单记录,总结一下. 在opencv中显示视频主要有: (1)从本地读取视频和调用摄像头读取视频 (2) ...

  5. Opencv读取视频一闪而过情况分析

    在参加一个软件比赛需要用opencv对视频的处理,也碰到了一些问题. 最常见的就是视频一闪而过了,在网上查了好久都没解决, 最后重装在配置环境变量时发现的. 现在我来终结一下估计是比较全的了. 先说明 ...

  6. ffmpeg和opencv 播放视频文件和显示器

    ffmpeg它是基于最新版本,在官网下载http://ffmpeg.zeranoe.com/builds/.编译时VS2010配置相关头文件及库的路径就可以.opencv的搭建參考上一个博客. 首先简 ...

  7. OpenCV录制视频,播放视频

    一.录制视频 获取摄像头操作 camObj = cv2.VideoCapture(0) :0为默认计算机默认摄像头,多个摄像头依次后面1.2.3 检查是否成功初始化: camObj.isOpen() ...

  8. OpenCV学习笔记(2)——如何用OpenCV处理视频

    如何用OpenCV处理视频 读取视频文件,显示视频,保存视频文件 从摄像头获取并显示视频 1.用摄像头捕获视频 为了获取视频,需要创建一个VideoCapature对象.其参数可以是设备的索引号,也可 ...

  9. OpenCV的视频读取

    现在找一个能拍摄视频的设备真是太容易了.结果大家都用视频来代替以前的序列图像.视频可能由两种形式得到,一个是像网络摄像头那样实时视频流,或者由其他设备产生的压缩编码后的视频文件.幸运的是,OpenCV ...

随机推荐

  1. Candy Sharing Game(模拟搜索)

    Candy Sharing Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  2. Suricata, to 10Gbps and beyond(X86架构)

    Introduction Since the beginning of July 2012, OISF team is able to access to a server where one int ...

  3. [置顶] Asp.Net底层原理(二、写自己的Asp.Net框架)

    我们介绍过了浏览器和服务器之间的交互过程,接下来介绍Asp.net处理动态请求. 写自己的Asp.Net框架,我们不会引用System.Web这个程序集,我们只需要创建要给自己的类库,所以在接下来的程 ...

  4. IPv4头部结构具体解释

    IPv4头部结构具体解释 下面为书中原文摘录: $(function () { $('pre.prettyprint code').each(function () { var lines = $(t ...

  5. C++使用之常量的定义

    在介绍C++的常前,先看下下面的代码. for (int i = 0; i < 512; ++i) { …; } 512是什么,它具有什么含义?在代码中若直接使用类似512这些“魔数”(magi ...

  6. ansible不配ssh连接,用户密码登录

    ansible 不配ssh免密链接,直接用ssh用户密码连接,要先装sshpass. 否则会报错: sshpass安装 sshpass下载地址:http://sourceforge.net/proje ...

  7. tcpdump使用技巧

    tcpdump使用技巧 http://www.veryarm.com/1751.html

  8. BZOJ 1664: [Usaco2006 Open]County Fair Events 参加节日庆祝( dp )

    先按时间排序( 开始结束都可以 ) , 然后 dp( i ) = max( dp( i ) , dp( j ) + 1 ) ( j < i && 节日 j 结束时间在节日 i 开 ...

  9. JS 控制 form是否提交表单

    问题背景:用php删除数据,希望在点击“删除”(button)的时候JS弹出confirm来确认是否删除. 此段代码为php中的form: <form action="?form=de ...

  10. 虚拟环境管理工具virtualenvwrapper-win初试

    virtualenv 用于建立虚拟目录,但是每次进入指定虚拟都必须activate, 而且如果一个环境很久没用了,不记得环境所在目录,就会遗忘该环境,virtualenvwrapper 正是解决以上问 ...