2013-02-09 91 views
-2

我已经实现了简单的avi文件显示video.for我的离线对象检测。 但我的问题是,我没有得到任何错误,但当我调试它时,我没有得到任何显示。请指导我。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的版本?我的视频是为了移动human.I在Visual Studio中使用opencv2.3 C++ 2008 请任何人都可以引导我?

Thanx。

回答

1

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

  • 安装了OS + bittedness回放目标预制的二进制编码,
  • 哪个编解码器,你需要/想和全球加他们为你的操作系统通常的方式编译。
  • 使用大多数媒体播放器默认支持的编解码器组合来查找,获取和/或重新创建新版本。
  • 呼叫附近的黑客,并要求他将其转换为不同的格式
  • 践踏和欢蹦乱跳在讨伐规范媒体组件的AVI文件
  • 只需使用MKV容器或作者的DVD光盘,而不是格式。 AVI文件与旋转媒体一样过时。
  • 占用虚拟客户农场......购买4个SM15000机架集群,创建10000个虚拟机,配置支持基础架构并使用它们接管世界,要求统一,然后制作甜点布丁。

更深入的细节是在这里:http://en.wikipedia.org/wiki/Audio_Video_Interleave

1

问题是最有可能是你传递文件名的运作方式。尝试使用双反斜线:

CvCapture* capture = cvCreateFileCapture("S:\\MOVIES\\English movies\\TANGLED.avi"); 

始终测试功能的结果:

if (!capture) 
{ 
    printf("!!! Failed to open file.\n"); 
    return; 
}