OpenCV调用摄像头录像并保存下来

news/2024/10/18 18:17:16/

http://www.cnblogs.com/lingshaohu/archive/2011/12/16/2290017.html

网上很多都说录制了之后视频文件为0k,或者是打不开。

其实,这个原因主要与2方面有关:

  1. OpenCV生成的视频的编码格式有关。

  2. 非法退出录取有关(我用200次循环解决。或者可以用Timer。或者用其他键处理)

 我个人推荐的解决方法如下:

1.下载一个XviD编码器并安装。

2.用以下代码进行测试:

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>
using namespace std;
int main()
{
CvCapture* capture=cvCaptureFromCAM(-1);
CvVideoWriter* video=NULL;
IplImage* frame=NULL;
int n;
if(!capture) //如果不能打开摄像头给出警告
{
cout<<"Can not open the camera."<<endl;
return -1;
}
else
{
frame=cvQueryFrame(capture); //首先取得摄像头中的一帧
video=cvCreateVideoWriter("camera.avi", CV_FOURCC('X', 'V', 'I', 'D'), 25,
cvSize(frame->width,frame->height)); //创建CvVideoWriter对象并分配空间
//保存的文件名为camera.avi,编码要在运行程序时选择,大小就是摄像头视频的大小,帧频率是32
if(video) //如果能创建CvVideoWriter对象则表明成功
{
cout<<"VideoWriter has created."<<endl;
}
cvNamedWindow("Camera Video",1); //新建一个窗口
int i = 0;
while(i <= 200) // 让它循环200次自动停止录取
{
frame=cvQueryFrame(capture); //从CvCapture中获得一帧
if(!frame)
{
cout<<"Can not get frame from the capture."<<endl;
break;
}
n=cvWriteFrame(video,frame); //判断是否写入成功,如果返回的是1,表示写入成功
cout<<n<<endl;
cvShowImage("Camera Video",frame); //显示视频内容的图片
i++;
if(cvWaitKey(2)>0) 
break; //有其他键盘响应,则退出
}
cvReleaseVideoWriter(&video);
cvReleaseCapture(&capture);
cvDestroyWindow("Camera Video");
}
return 0;
}

http://www.ppmy.cn/news/774981.html

相关文章

多媒体——视频——使用摄像机录制视频

通过系统自带的摄像机可以很方便地录制视频&#xff0c;只要指定摄像动作为MediaStore.ACTION_VIDEO_CAPTURE即可。 当然&#xff0c;需要事先设定下列的录像参数&#xff1a; 1、MediaStore.EXTRA_VIDEO_QUALITY&#xff1a;用于设定视频质量&#xff1b;2、MediaStore.EXTRA_…

佳能单反摄像机MOV视频恢复

人生中最重要的婚礼现场中&#xff0c;现在一般都会配置有录像&#xff0c;以此来记录这种重要的画面&#xff0c;但是经常会出现各种意外&#xff0c;导致录制的重要视频内容丢失损坏&#xff0c;这个时候该怎么办呢?今天甲驭科技数据恢复中心小编就跟大家分享一下关于佳能设…

使用zed相机录制视频

准备工作&#xff1a; 连接地面站&#xff0c;设置本地ip: 192.168.1.55 255.255.255.0 TCP连接&#xff1a;192.168.1.11 1、启动roscore 2、启动zed相机的launch文件 roslaunch zed_wrapper zed.launch 3、rostopic list 查看是否有 ZED 的 left 和 right 的 image…

RabbitMQ消息中间件的简介

为什么要使用消息服务 1. 异步处理 用户在注册账号时主要是关注的是账号有没有存储到数据库,至于邮箱消息等并不关注,这些消息就可以等有空再进行 串行 并行 消息服务处理 2.应用解耦 避免系统出现故障导致订单丢失 3.流量削锋…

华为云编译构建CodeArts Build新手操作指南

华为云编译构建&#xff08;CodeArts Build&#xff09;基于云端大规模并发加速&#xff0c;为客户提供高速、低成本、配置简单的混合语言构建能力&#xff0c;帮助客户缩短构建时间&#xff0c;提升构建效率。 本文将给各位开发者带来华为云CodeArts Pipeline的手把手初级教学…

4U8路服务器:将性能扩展到每一英寸

在这个世界上&#xff0c;高密度的材料往往意味着高价值&#xff0c;自古以来&#xff0c;黄金就是贵金属的代表&#xff0c;成为全球衡量价值的参考。 金属铂金密度21.46克/立方厘米、黄金密度19.32克/立方厘米&#xff0c;这些密度高的金属不但自身价值高&#xff0c;更重要的…

PSP1000/2000/3000 PSPgo全主机介绍(1)

转自&#xff1a;http://psp.tgbus.com/hb/200904/20090410173016_1.shtml 索尼电脑娱乐SCEI于2004年12月12日在日本发售的家用掌上型游戏机。标准售价为19800日元。 PSP1000采用4.3寸16&#xff1a;9比例、背光全透式的夏普ASV超广可视角TFT液晶屏幕&#xff0c;屏幕大小达到…

kicad最小布线宽度默认是多少_常见停车场管理系统项目的安装布线及注意事项...

现在很多现代化的智能停车场系统都广泛应用于各大小型停车场、地下车库、公寓小区进出口、公司单位的大门口等&#xff0c;智能停车场的主要组成部分是&#xff1a;系统由出口控制机、入口控制机、电动道闸机、车辆检测器、地感、通讯转换器、IC读卡器&#xff0c;停车场管理软…