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
#include
#include 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退出
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
