下面是一个简单的程序,可打开视频文件,读取内容,将其转换为对数极坐标格式,并将对数极坐标图像写入新的视频文件。
我已将输入视频放在Projects
/ Properties
/ Debugging Arguments
中argv[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" );
}