【问题标题】:Playing AVI files in OpenCV在 OpenCV 中播放 AVI 文件
【发布时间】:2010-07-15 03:05:47
【问题描述】:

我似乎无法使用 OpenCV 播放我的 avi 文件。我在 Mac 上,文件与 Quicktime 和 VLC 播放器一起使用。我曾尝试使用 mencoder 将其转换为 i420,但仍未成功。没有出现错误消息,似乎程序自动关闭,我不知道如何调试它。

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" );
}

【问题讨论】:

  • 当您在调试器中单步执行它时,它在哪里中止?
  • 它什么也没说。它只是正常退出。
  • 您确定作为命令行参数提供的文件名正确吗?尝试添加检查以确保文件确实存在。如果不是,则产生错误。
  • 我会加一张支票看看。谢谢!

标签: c++ opencv


【解决方案1】:

好吧,由于您的代码缺少错误检查,因此 cvCreateFileCapture() 可能存在问题,直到您检查函数的返回时您才会知道。

无论如何,您应该在此处删除或添加此语句的调试:

if( !frame ) break;

因为如果在检索文件的第一帧时出现问题,您的应用程序会简单地放弃并静默退出,给您“什么都没有发生”的感觉。

将其更改为:

if (!frame) { printf("Uow, huge fail!\n"); break;}

但最重要的是:你为什么不使用 cvCaptureFromAVI() ? 看看这个:http://nashruddin.com/How_to_Play_AVI_Files_with_OpenCV

【讨论】:

  • 我也尝试过这种方法,但我肯定会把调试信息放进去看看。谢谢!
  • 我遇到了同样的问题。未正确检索第一帧。但是,我使用教科书提供的test.avi和tree.avi文件进行测试。这里有什么问题?
  • 我不知道@Kalla。我得看看你的源代码。很多事情可能是错误的。问一个问题,然后用我的名字发表评论,这样我就可以关注你了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 2010-11-11
  • 2010-09-27
  • 2012-04-11
  • 2014-05-19
相关资源
最近更新 更多