opencv视频录制及解码器的一些说明
2016-04-10 10:38
211 查看
opencv 作为一个图像处理库,对视频方面采取了一些简单的方法封装。OpenCV只支持avi的格式,而且生成的视频文件不能大于2GB,而且不能添加音频。videocapture 打开摄像头参数为0时打开默认的摄像头。vediowriter是对视频的存储。读取视频可以用采用videocapture的read方法
或者 >> 存储视频也可以使用 videowriter 中的write方法或者<<; 在存储视频时,
OpenCV提供的格式是未经过压缩的,目前支持的格式如下:
CV_FOURCC('P', 'I', 'M', '1') = MPEG-1 codec
CV_FOURCC('M', 'J', 'P', 'G') = motion-jpeg codec
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') = H263 codec
CV_FOURCC('I', '2', '6', '3') = H263I codec
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec
在存储视频时采用motion-jpeg codec格式存储的视频最大,其他几种的格式存储的相差不大
<pre name="code" class="cpp">//录制视频代码,较为简单。 #include<cv.h><span style="color:#cc0000;"> </span>#include<cxcore.h> #include<highgui.h> #include<iostream> #include <highgui.hpp> #include <imgproc.hpp> using namespace std; using namespace cv; int main() { VideoCapture capture(0); double dWidth = capture.get(CV_CAP_PROP_FRAME_WIDTH); //get the width of frames of the video double dHeight = capture.get(CV_CAP_PROP_FRAME_HEIGHT); Size frameSize(static_cast<int>(dWidth), static_cast<int>(dHeight)); VideoWriter writer("C:\\Users\\Administrator\\Desktop\\VideoTest.avi", CV_FOURCC('D', 'I', 'V', 'X'), 25.0, frameSize, true); if (!capture.isOpened()) return -1; Mat frame; while (1) { capture >> frame; imshow("读取视频", frame); writer << frame; waitKey(30);//给图像绘制留点时间 } return 0; }
videowriter的参数一表示的存储路径。参数二为视频存储格式。参数三为帧频,参数四为视频大小。参数五为true表示录制彩色视频。
相关文章推荐
- openlayer 3 长按事件
- 【转载】架构师需要了解的Paxos原理、历程及实战
- 一台电脑同时运行多个tomcat配置方法
- Linux内核分析实验七
- tomcat下运行的Jenkins可用插件为空
- 64位 ubuntu 运行32位命令 (arm-none-linux-gnueabi-gcc)
- Linux kernel Makefile for ctags
- openlayers总结
- Ngnix Proxy模块的应用之负载均衡
- Linux内核分析第七周———可执行程序的装载
- 实验七:Linux内核如何装载和启动一个可执行程序
- hadoop架构
- Nginx Rewrite的应用-根据访问平台做简单跳转
- linux备份
- Nginx的编译安装
- OpenGL 中 GLUT 消息事件处理函数
- 见龙在田!告诉你什么是真正的IT运维服务之道
- 后台拿webshell方法(2)
- 用PS制作网站上的动态广告栏
- tomcat(4)Tomcat的默认连接器