无法阻止视频帧窗口关闭

时间:2014-02-27 09:39:28

标签: opencv image-processing video-capture

下面是一个简单的程序,可打开视频文件,读取内容,将其转换为对数极坐标格式,并将对数极坐标图像写入新的视频文件。

我已将输入视频放在Projects / Properties / Debugging Argumentsargv[1],但我不知道输出位置(即argv[2])将在制作时放置。

此外,尽管在最后使用system( "pause" );,窗口立即关闭,所以我看不到那里的消息。

所以,我的问题是:(1) argv[2]一旦形成在哪里? (2)为什么窗口没有打开,等待按键?

提前致谢,

int main( int argc, const char** argv )
{
 CvCapture* capture = 0;

 capture = cvCreateFileCapture( argv[1] );

 if( !capture ) return -1;

 IplImage* bgr_frame = cvQueryFrame( capture );

 double fps = cvGetCaptureProperty( capture, CV_CAP_PROP_FPS );

 CvSize size = cvSize( (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH ), (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT ) );

 CvVideoWriter* writer = cvCreateVideoWriter( argv[2], CV_FOURCC( 'M', 'J', 'P', 'G' ), fps, size );

 IplImage* logpolar_frame = cvCreateImage( size, IPL_DEPTH_8U, 3 ); 


 while( ( bgr_frame = cvQueryFrame( capture ) ) != NULL )
 {
  cvLogPolar( bgr_frame, logpolar_frame, cvPoint2D32f( bgr_frame->width/2, bgr_frame->height/2 ), 40, CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS );      
  cvWriteFrame( writer, logpolar_frame );
 }

 cvReleaseVideoWriter( &writer );   
 cvReleaseImage( &logpolar_frame );
 cvReleaseCapture( &capture );  

 system( "pause" );
}

0 个答案:

没有答案