View Code
1 int _tmain(int argc, _TCHAR* argv[])
2 {
3 CvCapture* capture=0;
4 //读入视频文件
5 capture = cvCreateFileCapture("tree.avi");
6 if(!capture)
7 return -1;
8 //将下一帧视频文件载入内存
9 IplImage *bgr_frame = cvQueryFrame(capture);
10
11 //获取capture的各种属性
12 //打开一个视频文件进行此操作,并将各帧图像转换 为对数极坐标格式。将装换后的太入戏逐帧写入视频文件。直到读入结束。
13 double fps = cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
14
15 CvSize size = cvSize(
16 (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH),
17 (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT)
18 );
19
20 /* initialize video file writer
21 第一个参数是用来指定新建视频的名称。
22 第二个参数是视频压缩的编码方式。Opencv用cv_fourcc宏来指定编码格式。
23 第三个参数是用来指定播放的帧率
24 第四个参数是用来指定图像的大小。
25 */
26 CvVideoWriter *writer = cvCreateVideoWriter("tree2.avi",CV_FOURCC('M','J','P','G'),fps,size);
27 IplImage* logpolar_frame = cvCreateImage(size,IPL_DEPTH_8U,3);
28
29 while((bgr_frame=cvQueryFrame(capture))!=NULL)
30 {
31 cvLogPolar(bgr_frame,logpolar_frame,cvPoint2D32f(bgr_frame->width/2,bgr_frame->height/2),40,CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS);
32
33 cvWriteFrame(writer,logpolar_frame);
34 }
35
36 cvReleaseVideoWriter(&writer);
37 cvReleaseImage(&logpolar_frame);
38 cvReleaseCapture(&capture);
39 return (0);
40 }