opencv 学习之 视频存储

由于 opencv 侧重于图像的处理,故其编解码能力一般。只能识别 AVI 封装,以及几种有限的编码方式,如下:

// coder for 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
CV_FOURCC('I', 'Y', 'U', 'V') = IYUV coder


c 风格的读取与存储:

// rw.cpp

<pre name="code" class="cpp">int main()  
{
	CvCapture * capture;
	capture = cvCreateCameraCapture(0);           //打开摄像头
	//capture = cvCreateFileCapture(filename);  //打开本地视频

	CvVideoWriter *writer;
	writer = cvCreateVideoWriter("d:\\data\\out.avi", CV_FOURCC('I', 'Y', 'U', 'V'), 25.0, cvSize(640, 480), 1); 

	IplImage * image; 
	image = cvQueryFrame(capture);

	cvNamedWindow("show", CV_WINDOW_AUTOSIZE);  

	while(image)
	{         
        	cvShowImage("show", image); 

		cvWriteFrame(writer, image); 

       		 if(cvWaitKey(33)==27) break;  
        
		cvGrabFrame(capture);

        	image = cvRetrieveFrame(capture); 

		//image = cvQueryFrame(capture);
    }  

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


 

 


再来个C++ 风格的

// rw.cpp

void main()  
{  
     VideoCapture capture(0);
     //VideoCapture capture(filename);
<pre name="code" class="cpp">     VideoWriter writer("VideoTest.avi", CV_FOURCC('M', 'J', 'P', 'G'), 25.0, Size(640, 480));  
     Mat frame;  
          
     while (capture.isOpened())  
     {  
         capture >> frame; 
         //capture.read(frame);
         writer << frame;  
         imshow("video", frame);  
         if (cvWaitKey(20) == 27)  
         {  
             break;  
         }  
     }  
 }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值