利用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. 从一个App跳转到另一个App

    在跳入App的info中配置Bundle identifier 在跳入App的info中配置URL Schemes 在另一个应用程序中按照上边的操作添加openURL并运行,就可以跳转了 调用open ...

  2. 【转】Ubuntu常用软件合集

    [转]Ubuntu常用软件合集 Ubuntu常用软件合集 我用的使Ubuntu-Kylin14.04,原因呢主要是觉得使本土化的,自带了日历.输入法.优客助手等易于上手的应用.也省的每次安装完原生的系 ...

  3. Group By 多个分组集小结 --GROUPING SETS,GROUP BY CUBE,GROUP BY ROLLUP,GROUPING(),GROUPING_ID()

    T-SQL 多个分组集共有三种 GROUPING SETS, CUBE, 以及ROLLUP, 其中 CUBE和ROLLUP可以当做是GROUPING SETS的简写版 示例数据库下载: http:// ...

  4. [译]SSRS 报表版本控制

    问题 如今商务智能应用广泛,对我们的商业愈加重要. 对新报表和的各种需求不断攀升. 自 SQL Server 2008 R2的 Reporting Services (SSRS) 开始,微软视图为减轻 ...

  5. 「Foundation」集合

    一.NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向对象的形式操纵对象,是不可变数组 ...

  6. 调试带有源代码的DLL文件

    工作环境:dll源代码是c,在Visual studio 2010中调试. 第一步,调试的准备. 用C#语言编写一个测试dll文件的程序,由于dll源程序是c的,且运行结果是黑屏的,所以C#代码也是运 ...

  7. 安装Oracle,新建组、用户的时候的一个错误

    [root@localhost /]# mkdir -p /u01/oracle[root@localhost /]# useradd -g oinstall -G dba -d /u01/oracl ...

  8. python collections.Counter笔记

    Counter是dict的子类,所以它其实也是字典.只不过它的键对应的值都是计数,值可以是任意整数.下面是四种创建Counter实例的例子: >>> c = Counter() # ...

  9. 利用Linux系统函数alarm() 来检测计算机性能

    大家都知道,alarm() 是Linux系统自带的定时函数,操作系统管理进程时为每个进程分配了一个定时器,下面利用1秒钟定时,看计算机能计数多少来判断计算机的性能: #include<stdio ...

  10. django-celery

    在settings.py里installed_apps里添加 djcelery 需安装django-celery 在settings末端添加 import djcelery djcelery.setu ...