OpenCV没有显示来自Macbook网络摄像头的视频

时间:2018-03-16 04:23:00

标签: c++ opencv

我正在使用here中的代码:

#include "opencv2/opencv.hpp"

using namespace cv;

int main(int, char**)
{
    VideoCapture cap(0); // open the default camera
    if(!cap.isOpened())  // check if we succeeded
        return -1;

    namedWindow("edges",1);
    for(;;)
    {
        Mat frame;
        cap >> frame; // get a new frame from camera
        imshow("edges", frame);
        if(waitKey(200) >= 0) break;
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}

几乎一切都按预期工作。

出现一个窗口,我的摄像头指示灯变为绿色,然后没有视频。

我已经简化了我的代码,因为我实际上不希望在示例中进行转换。只是想看一个视频Feed。

我搜索了一堆,读了几个问题,似乎什么都没有用。我尝试调整等待时间,跳过第一帧,使用cap.read,包括highgui,使highgui感到特别排除,并亵渎。到目前为止,没有任何效果。

我使用了来自source的opencv,并且正在运行opencv2.4.13.6。使用CMake和make。

我的CMake是:

set( OpenCV_DIR /Users/jason.nichols/opencv-2.4.13.6/build )
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage motion.cpp )
target_link_libraries( DisplayImage  ${OpenCV_LIBS} )

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

出于某种原因,关闭我的终端并重新打开它使这项工作成功。

我猜测它是我在opencv设置期间添加到.bash_profile中的环境变量,但不是100%肯定。

这个问题的真正含义是没有运行时错误,没有cmake错误,也没有编译器错误。

我知道这不是一个令人满意的答案,但如果你达到这个状态,请尝试将其关闭并重新打开。

再一次,具体来说,代码编译,运行,打开网络摄像头灯,但不显示任何视频或抛出任何异常。在这种状态下,重启终端解决了我的问题。如果有人知道原因,请打开更好的答案。这几乎肯定不适用于任何其他问题。