Доступ к веб-камере в Xcode с OpenCV (C ++) - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь открыть веб-камеру и отобразить короткий снимок с помощью OpenCV. В настоящее время я работаю над Xcode, с языком C ++.

Код довольно прост:

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, const char * argv[]) {

    // variable initialization
    Mat frame;
    VideoCapture cap;            // 0 is the webcam

    // try to open camera
    cap.open(0);
    if (!cap.isOpened()) return -1;  // check if there is no video or no way to display it

    // create a window and display the video capture
    namedWindow("Video Capture", CV_WINDOW_AUTOSIZE);
    for (int i=0; i<100; i++) {
        cap >> frame;
        imshow("Video Capture", frame);
        waitKey(1);
    }

    return 0;
}

При запуске кода возвращается следующая ошибка:

[access] This app has crashed because it attempted to access privacy-sensitive 
data without a usage description.  The app's Info.plist must contain an 
NSCameraUsageDescription key with a string value explaining to the 
user how the app uses this data.

Таким образом, я добавил файл Info.plist в проект (в настоящее время в том же каталоге, где находится main.cpp) и добавил описание, предложенное компилятором:

Key: Privacy - Camera Usage Description
Value: $(PRODUCT_NAME) camera use

Затем в настройках сборки проекта я ссылался на только что написанный файл, используя полный путь, как вы можете видеть на следующем рисунке:

Path to Info.plist file

Я уверен, что путь правильный, так как я перетаскиваю сам файл, но компилятор продолжает показывать ту же ошибку и завершает выполнение.

1 Ответ

0 голосов
/ 08 ноября 2018

Я нашел решение в конце концов; Вот шаги, которые я выполнил:

  • В Project Navigator (в левой части Xcode IDE) щелкните правой кнопкой мыши проект -> Новый файл -> Файл свойств
  • Назовите файл «Info.plist» и сохраните его в том же каталоге, где находится main.cpp (он должен работать и в директории верхнего уровня, но это то, что у меня работает), как показано на рисунке. ниже: Info.plist generation
  • Выберите файл Info.plist и отредактируйте его в соответствии с объяснением в приведенном выше вопросе.
  • Теперь нам нужно связать Info.plist с проектом, поэтому щелкните левой кнопкой мыши проект в Навигаторе проектов, выберите вкладку Общие и на левой панели («Список проектов и целей») щелкните исполняемый файл под Раздел "TARGET". Вы должны увидеть кнопку с надписью «Выбрать файл Info.plist», см. Рисунок ниже: Link to Info.plist file

Поскольку я заметил, что программа еще не запускалась непосредственно из среды разработки Xcode, но я смог перейти (в Finder) к каталогу, где находился исполняемый файл, и запустить программу с помощью терминала, я скопировал и вставил Info.plist в эту папку, как предложено здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...