您的位置:首页 > 运维架构

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表示录制彩色视频。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: