-2

我已经实现了简单的 avi 文件显示 video.for 我的离线对象检测。但我的问题是我没有收到任何错误但是当我调试它时我没有得到任何显示。请指导我。

 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 请任何人都可以指导我吗?

谢谢。

4

2 回答 2

1

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

  • 为 OS+bittedness 播放目标安装一个预制的二进制编解码器,
  • 编译您需要/想要的任何编解码器,并以您的操作系统的常用方式全局添加它们。
  • 使用大多数媒体播放器默认支持的编解码器组合查找、获取和/或重新创建新版本。
  • 打电话给附近的黑客并要求他将其转换为不同的格式
  • Stomp 和 romp 为标准化媒体组件 AVI 文件的格式而奋斗
  • 只需使用 MKV 容器或创作 DVD 光盘。AVI 文件与旋转媒体一样过时。
  • 进行虚拟客农... 购买4个SM15000 Rack集群,创建10000台VM,配置配套基础设施并使用它们接管世界,要求统一然后做甜点布丁。

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

于 2013-02-09T09:50:19.637 回答
1

问题很可能是您将文件名传递给函数的方式。尝试使用双反斜杠:

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

始终测试函数的结果

if (!capture)
{
    printf("!!! Failed to open file.\n");
    return;
}
于 2014-02-28T15:43:37.160 回答