0%

Xcode调用Mac摄像头

  Xcode中OpenCV C++调用Mac摄像头。由于在macOS 10.14中加入了隐私管理,直接调用摄像头会出现报错

1
OpenCV: not authorized to capture video (status 0), requesting... OpenCV: camera failed to properly initialize!

  所以涉及摄像头这类隐私问题的项目必须添加Info.plist,在这注册摄像头权限。

注册摄像头权限

  Photo Booth作为Mac原生的调用摄像头的app,天生带有设置权限的Info.plist,我们只需要将Photo Booth的Info.plist稍作修改,便可应用于我们的程序中。

  当然,首先我们得在Xcode里配置OpenCV

1、在/System/Applications/Photo Booth.app中右击“显示包文件”,找到其中的/System/Applications/Photo Booth.app/Contents/Info.plist,将这个Info.plist拷贝用于修改。

2、修改Info.plist

  将原本的Info.plist进行下列修改。

3、将Info.plist移入Xcode项目中

  在Xcode项目的Product文件中右击里面的项目“Show In Folder”,将修改后的Info.plist添加到该文件夹中。

  摄像头注册配置完成。

OpenCV C++ 调用摄像头

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

int main()
{
//读取视频或摄像头
VideoCapture capture(0);

while (true){
Mat frame;
capture >> frame;
imshow("读取视频", frame);
waitKey(30); //延时30
}
return 0;
}