现在的位置: 首页 > 综合 > 正文

从摄像头获取_保存视频(CV_FOURCC可以获取的视频编码格式)

2013年10月11日 ⁄ 综合 ⁄ 共 1019字 ⁄ 字号 评论关闭

 

#include "cv.h"
#include "highgui.h"

int main(int argc, char** argv) {
    cvNamedWindow("win");

    CvCapture* capture = cvCreateCameraCapture(0);
    IplImage* frame = cvQueryFrame(capture);
	
    char* writePath = "f:\\my.avi";
    CvVideoWriter* writer = cvCreateVideoWriter( writePath, CV_FOURCC('M','J','P','G'),
					   12, cvGetSize(frame));//(1)经过反复调试,此处fps调到12时输出的视频才无快放或者慢放到现象。
	 
	while(1){
        frame = cvQueryFrame(capture);
        if(!frame) break;

        cvWriteFrame(writer, frame);
        cvShowImage("win", frame);

        char c = cvWaitKey(1);//(2)
        if(c==27) break;
    } 

    cvReleaseVideoWriter(&writer);
    cvReleaseCapture(&capture);
    cvDestroyWindow("win");
    return 0;
} 

在代码中有两个地方涉及帧率,一个是保存的视频文件需要指定帧率,一个是从摄像头读取画面时需要按一定的帧率(1、2处)。
谁的帧率小就拖了另一个后腿,视频输出的帧率由小帧率所决定。

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

经过试验,选取MPEG-4录像10秒,大小为963kb;选用H263,录像11秒钟,大小为1.25M(仅仅是验证性试验)。

抱歉!评论已关闭.