opencv 在 mac osx 中不显示视频

Posted

技术标签:

【中文标题】opencv 在 mac osx 中不显示视频【英文标题】:opencv does not display a video in mac osx 【发布时间】:2013-04-18 16:52:07 【问题描述】:

我刚刚在我的 Mac 上安装了 OSX 10.8.3 的 opencv,我用 brew 安装了它:

brew install opencv

版本是2.4.3

>>> ls /usr/local/Cellar/opencv
2.4.3

我尝试显示视频。格式是.asf,编解码器是MJPG(我只能用VLC打开,看截图)

帧数(如果在opencv中打印出来或在VLC中看到)是相同的。

但如果我运行 opencv 程序,则只显示第一帧。另一个不是..为什么??

这是opencv代码

#include <iostream> 
#include <string> 
#include <sstream>

#include <opencv2/core/core.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace std;
using namespace cv;


int main(int argc, char *argv[]) 

    Mat frame;
    int numframe = 0;

    if (argc != 2) 
        cout << "Not enough parameters" << endl;
        return -1;
    

    const string source = argv[1];
    VideoCapture capture(source);
    namedWindow("video", CV_WINDOW_AUTOSIZE);

    if (!capture.isOpened()) 
        cout  << "Could not open " << source << endl;
        return -1;
    

    for(;;) 
        capture >> frame;
        numframe++;
        if (frame.empty()) 
            cout << "frame empty.." << endl;
            break;
        
        cout << numframe << endl;
        imshow("video", frame);
    

    return 0;

【问题讨论】:

【参考方案1】:

之后:

imshow("video", frame);

呼叫:

waitKey(10);

必须调用cv::waitKey() 才能显示窗口。该参数是窗口将保持打开状态的毫秒数。此函数返回在此期间按下的键的 ASCII 码。

理想情况下,您可以将 10 替换为使其以正确的 FPS 显示帧的数字。换句话说:cv::waitKey(1000 / fps);

【讨论】:

【参考方案2】:

尝试在启用 FFMPEG 支持的情况下编译 OpenCV,以便访问更多编解码器。如果brew不行,用brew安装ffmpeg和cmake,然后在github上抓取OpenCV的源码重新编译。

【讨论】:

如何查看是否已经支持 ffmpeg?因为我是这么认为的 我看到你的问题已经解决了。但是,为了将来参考,您可以使用函数 cv::getBuildInformation() 来获取已编译模块的详细信息。

以上是关于opencv 在 mac osx 中不显示视频的主要内容,如果未能解决你的问题,请参考以下文章

卸载 OpenCV 3 Mac OSX

安装opencv python mac osx 10.11?

mac osx 下安装opencv

在 Mac OSX 中使用 cv::VideoWriter 会产生“警告:无法创建空电影文件容器”。

opencv python osx

Qt 剪贴板操作在 OSX 上的测试中不起作用