Mac macOS 10.14 Mojave Xcode OpenCV 无法打开摄像头,调用摄像头权限错误
Mac macOS 10.14 Mojave Xcode opencv 調用攝像頭權限錯誤
This app has crashed because it attempted to access privacy-sensitive data without a usage description.
OpenCV: camera failed to properly initialize!
更新了macOS 10.14 Mojave之后,使用opencv調用攝像頭會產生權限錯誤,報錯This app has crashed because it attempted to access privacy-sensitive data without a usage description.
OpenCV: camera failed to properly initialize!
原因是macOS 10.14加入了對所有程序的隱私權限管理,如果要涉及隱私權限,要在可執行程序旁邊加入Info.plist且在里面注冊攝像頭權限。
操作示例
這里從Mac自帶程序Photo Booth里復制Info.plist,在應用程序文件夾里找到Photo Booth.app,右鍵選擇顯示包內容,文件夾里有一個Info.plist文件
將文件復制
然后打開Xcode找到自己的工程
如上圖所示,找到Products中的Target文件并用finder打開
將Info.plist文件粘貼在該文件夾下
修改Info.plist文件中的內容,原文件內容如下
刪去其中的不必要的鍵值對,最后加入鍵Privacy - Camera Usage Description,值為YES,修改好后的Info.plist如下,OpenCV為我的項目名。
其中這幾項為自己的項目名,根據自己工程名進行修改
修改之后保存就可以了
// // 2-8攝像頭.cpp // OpenCV // // Created by 盧欣 on 2019/7/14. // Copyright ? 2019 盧欣. All rights reserved. //#include <stdio.h> #include <opencv2/opencv.hpp> #include <iostream>using namespace cv;int main(int argc, char** argv) {Mat frame;namedWindow("frame",cv::WINDOW_AUTOSIZE);VideoCapture cap;cap.open(0);if(!cap.isOpened()){std::cerr << "Couldn't open capture." << std::endl;return -1;}while(true){cap >> frame;imshow("frame", frame);char c = waitKey(20); //延時30if(c == 'q'){break;}}return 0; }用該代碼測試后即可,代碼會打開攝像頭,按q退出
總結
以上是生活随笔為你收集整理的Mac macOS 10.14 Mojave Xcode OpenCV 无法打开摄像头,调用摄像头权限错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.1 夏驰和徐策带你了解计算机的发展方
- 下一篇: 褚时健:年轻人不要太急了,我快九十了还在