我买了OpenCV书,第一个视频节目没有用。在进一步研究之前,我想知道我的系统是否有问题。这是一个非常简单的程序,几乎没有调试。
#include "highgui.h"
int main( int argc, char** argv ) {
cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );
CvCapture* capture = cvCreateFileCapture( argv[1] );
IplImage* frame;
while(1) {
frame = cvQueryFrame( capture );
if( !frame ) break;
cvShowImage( "Example2", frame );
char c = cvWaitKey(33);
if( c == 27 ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( "Example2" );
}
它正常编译,但在运行时,程序只需打开一个白色窗口几秒钟然后关闭。显然,没有错误看起来像是弃用警告。可能有什么不对?
k♥t ./demo /opt/Media/Vídeos/Docs/Connections/Connections/02\ -\ Death\ in\ the\ Morning.avi
Using network protocols without global network initialization. Please use avformat_network_init(), this will become mandatory later.
k♥t
编辑:抱歉所有的大惊小怪,这只是一个错字。现在修复了。
答案 0 :(得分:1)
我在您传递的文件名中看到很多空格作为参数,并且您混合了正向和反向斜杠。请验证路径和文件名是否有效。
答案 1 :(得分:1)
虽然通常你可以用向后的斜线逃脱空间,但有时OpenCV可能会很挑剔。我建议将视频重命名为没有空格的名称,甚至可能在测试时将其复制到与程序相同的目录中。
如果您对avi文件有进一步的问题,可以查看this similar question以及链接的教程:http://nashruddin.com/How_to_Play_AVI_Files_with_OpenCV
答案 2 :(得分:1)
添加安全检查!始终验证您正在呼叫的功能是否成功:
CvCapture* capture = cvCreateFileCapture( argv[1] );
if (!capture)
{
// Print error message! Failed to load file
}
可能是因为无法加载文件。