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

#macos #opencv #video-capture #opencv4

#macos #opencv #видеозахват

Вопрос:

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

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

Ответ №1:

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

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

Ответ №2:

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