打开内置的Macbook Pro相机时出错

时间:2019-04-15 23:03:37

标签: macos opencv video-capture opencv4

我正在尝试使用带有c ++的opencv 4.1.0从Macbook pro的内置相机读取一些帧。下面是我的代码:

#include "opencv2/opencv.hpp"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgcodecs.hpp>
#include <iostream>
#include <unistd.h>

using namespace cv;
using namespace std;


int main(int, char**) {
    VideoCapture cap(0);

    if(!cap.isOpened())
        cerr<<"Error! unable to open camera!";
        return -1;

    cout << "Start grabbing" << endl
    << "Press any key to terminate" << endl;
    Mat frame;
    namedWindow("Live");
    for (;;)
    {
        // wait for a new frame from camera and store it into 'frame'
        cap.read(frame);
        // check if we succeeded
        if (frame.empty()) {
            cerr << "ERROR! blank frame grabbed\n";
            break;
        }
        // show live and wait for a key with timeout long enough to show images
        imshow("Live", frame);
        if (waitKey(5) >= 0)
            break;
    }
    return 0;


}

致电

VideoCapture cap(0);

我得到的错误是:

testApp[11889:464240] +[AVCaptureDevice authorizationStatusForMediaType:]: unrecognized selector sent to class 0x7fff9f79cd50
[ERROR:0] VIDEOIO(AVFOUNDATION): raised unknown C++ exception!

我尝试用其他索引替换0,但是它们都不起作用。有人知道发生了什么事吗?

2 个答案:

答案 0 :(得分:0)

您正在运行什么版本的macOS?我有完全相同的问题,但是在Java中。今天,我通过将操作系统从High Sierra升级到Mojave版本10.14并使用xcode-select --install在终端中更新Xcode命令行工具来解决了该问题。

我认为我们遇到此问题的原因是Xcode命令行工具-提供用于访问macOS和ios上的摄像头的api(AVFoundation)-太旧了,因此与新发布的OpenCV4.1.0不兼容。因此,我的建议是尝试更新您的Xcode命令行工具。就我而言,我需要升级操作系统以获得新版本。

答案 1 :(得分:0)

我有同样的问题,但是在python中。我想访问网络摄像头并捕获图像,但是继续出现此错误。解决了我的问题的是,对Macbook进行了简单的SMC重置。