#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.