Ошибка при открытии встроенной камеры Macbook pro - PullRequest
0 голосов
/ 16 апреля 2019

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

1 Ответ

1 голос
/ 25 апреля 2019

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

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

...