Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 无法阻止视频帧窗口关闭_Opencv_Image Processing_Video Capture - Fatal编程技术网

Opencv 无法阻止视频帧窗口关闭

Opencv 无法阻止视频帧窗口关闭,opencv,image-processing,video-capture,Opencv,Image Processing,Video Capture,下面是一个简单的程序,可以打开视频文件,读取内容,将其转换为对数极坐标格式,并将对数极坐标图像写入新的视频文件 我已将输入视频作为argv[1]放置在项目中/属性/调试参数中,但我不知道输出(即argv[2])在生成时将放置在何处 此外,尽管使用了系统(“暂停”)在最后,窗口立即关闭,因此我无法看到那里的消息 所以,我的问题是:(1)一旦形成,argv[2]放在哪里(2)为什么窗口不保持打开状态,等待击键 提前感谢, int main( int argc, const char** argv )

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

我已将输入视频作为
argv[1]
放置在
项目中
/
属性
/
调试参数
中,但我不知道输出(即
argv[2]
)在生成时将放置在何处

此外,尽管使用了
系统(“暂停”)在最后,窗口立即关闭,因此我无法看到那里的消息

所以,我的问题是:(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" );
}

只需使用SeaMigIe()和WaITKEY(),它总是建议使用C++而不是过时的C,请参见在窗口中显示图像。确保您成功地通过<代码>打开捕获(如果(捕获){///失败,打开}。
只需将视频放入项目目录并直接给出文件名,而不是argv程序的目标似乎是使用MPG编解码器将一个视频文件转换为新的视频文件。你可能想看一看,这是更合适的。