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退出


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部