AVI文件无法在Windows上打开

时间:2013-02-09 07:15:25

标签: visual-c++ image-processing opencv

我已经实现了简单的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 请有人能指导我吗?

感谢名单。

2 个答案:

答案 0 :(得分:1)

AVI文件实际上只是一个容器规范,对于它将接受的大量媒体格式而言相当混杂,但是播放主机必须具有所有媒体组件的解码器,或者取决于播放应用程序无法打开/播放视频文件的错误。你可以做几件事来解决这个问题:

  • 为OS + bittedness播放目标安装预先制作的二进制编解码器,
  • 编译您需要/想要的编解码器,并以通常的方式为您的操作系统添加它们。
  • 使用大多数媒体播放器默认支持的编解码器组合查找,获取和/或重新创建新版本。
  • 打电话给邻居黑客并要求他将其转换为其他格式
  • 在十字军中踩踏并嬉戏以标准化媒体组件AVI文件的格式
  • 只需使用MKV容器或作者DVD光盘。 AVI文件与旋转媒体一样过时。
  • 接受虚拟客户养殖......购买4个SM15000机架集群,创建10000个虚拟机,配置支持基础设施并使用它们来接管世界,需要统一然后制作甜点布丁。

更深入的细节在这里: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;
}