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

cvCreateVideoWriter 录制视频的一个可用程序

2013年01月22日 ⁄ 综合 ⁄ 共 1001字 ⁄ 字号 评论关闭

编程环境:Win7+VS2008+OpenCV2.3

#include <cv.h>
#include <highgui.h>
#include <ctype.h>
#include <stdio.h>

int main (int argc, char **argv)
{ 
	CvCapture *capture = 0;  
	IplImage *frame = 0; 
	CvVideoWriter *vw;  
	int w = 250, h = 250;  
	int c, num = 0;  
	CvFont font; 
	char str[64];   

	capture = cvCaptureFromCAM (0); 
	cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, w);
	cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, h);  

	cvInitFont (&font, CV_FONT_HERSHEY_COMPLEX, 0.7, 0.7); 
	cvNamedWindow ("Capture", CV_WINDOW_AUTOSIZE); 


	frame = cvQueryFrame (capture); 
	CvSize size = cvGetSize(frame);
	vw = cvCreateVideoWriter ("cap.avi",-1 , 15, size,1);  // 创建写入器
	if (!vw)
	{
		printf("create video error");
	}

	while (1) 
	{    
		frame = cvQueryFrame (capture); 
		
		_snprintf_c(str, 64, "%03d[frame]", num);   
		cvPutText (frame, str, cvPoint (10, 20), &font, CV_RGB (0, 255, 100));  

		cvShowImage ("Capture", frame); 

		cvWriteFrame (vw, frame);   

		num++;  
		c = cvWaitKey (10);  // 在接下来的10ms中持续检测按键 
		if ('q' == c)
		{
			break;
		}
	}  
	cvReleaseVideoWriter (&vw); // 释放视频写入器
	cvReleaseCapture (&capture); 	
	cvDestroyWindow ("Capture"); 
	return 0;
}

注:在压缩程序选择Microsoft RLE 和 VMnc v2 的时候, 无法录制成功。  选择其余几个均测试成功。

抱歉!评论已关闭.