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

        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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值