我已经实现了简单的avi文件显示视频。用于我的离线对象检测。 但我的问题是我没有收到任何错误,但是当我调试它时,我没有得到任何显示。请指导我。
int main( int argc, char** argv )
{
cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );
CvCapture* capture = cvCreateFileCapture("S:\MOVIES\English movies\\TANGLED.avi" );
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" );
}
视频文件是否有任何大小限制,或者取决于opencv的版本?我的视频用于移动人类。我在visual studio C ++ 2008中使用opencv2.3 请有人能指导我吗?
感谢名单。
答案 0 :(得分:1)
AVI文件实际上只是一个容器规范,对于它将接受的大量媒体格式而言相当混杂,但是播放主机必须具有所有媒体组件的解码器,或者取决于播放应用程序无法打开/播放视频文件的错误。你可以做几件事来解决这个问题:
更深入的细节在这里:http://en.wikipedia.org/wiki/Audio_Video_Interleave
答案 1 :(得分:1)
问题很可能是您将文件名传递给函数的方式。尝试使用双反斜杠:
CvCapture* capture = cvCreateFileCapture("S:\\MOVIES\\English movies\\TANGLED.avi" );
和始终测试函数的结果:
if (!capture)
{
printf("!!! Failed to open file.\n");
return;
}