Ошибка при открытии встроенной камеры Macbook pro

Я пытаюсь прочитать некоторые кадры со встроенной камеры Macbook pro, используя opencv 4.1.0 с С++. Ниже приведен код, который у меня есть:

#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 другими индексами, но ни один из них не работает. Кто-нибудь знает, что происходит?


person Oliver Chang    schedule 15.04.2019    source источник


Ответы (2)


На какой версии macOS вы работаете? У меня была точно такая же проблема, но на Java. Я решил это сегодня, обновив свою ОС с High Sierra до Mojave версии 10.14 и обновив инструменты командной строки Xcode в терминале, используя xcode-select --install.

Я думаю, что причина, по которой у нас возникла эта проблема, заключается в том, что инструменты командной строки Xcode, которые предоставляют API (AVFoundation) для доступа к камере в macOS и ios, были слишком старыми и, следовательно, несовместимыми с недавно выпущенным OpenCV4.1.0. Поэтому я предлагаю попробовать обновить инструменты командной строки Xcode. В моем случае мне нужно было обновить ОС, чтобы получить более новую версию.

person jojojolin    schedule 24.04.2019

У меня была такая же проблема, но на питоне. Я хотел получить доступ к веб-камере и захватить изображения, но продолжал получать эту ошибку. Что решило мою проблему, так это простой сброс SMC на macbook.

person Dini_Sarithma    schedule 11.11.2020
comment
Это на самом деле не отвечает на вопрос. Если у вас есть другой вопрос, вы можете задать его, нажав Задать вопрос. Вы также можете добавить вознаграждение, чтобы привлечь больше внимания к этому вопросу, как только у вас будет достаточно репутация. – Из обзора - person Mihail Duchev; 11.11.2020