opencv视频录制及解码器的一些说明

来源:互联网 发布:腾讯云服务器域名绑定 编辑:程序博客网 时间:2024/04/29 10:31
        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表示录制彩色视频。

0 0
原创粉丝点击