本问就 Mac 系统安装 OpenCV 以及实现一个简单的人脸识别程序进行记录。
安装 OpenCV
实际上,OpenCV 的安装方式比较多,这里为了避免一些第三方安装的问题,我们采用源代码方式安装。
安全前请确保本机已经安装了 CMake 和 Xcode。
我们去 OpenCV 的网站 下载源代码,选择 Release -> SourceCode,可以选择最新的 4.11 版本。
这里以 4.1.1 版本为例,下载后我们解压到 opencv-4.1.1
,然后进入到该目录,新建一个 release 目录用于存放我们构建好的内容,并进入到该目录:
1 | mkdir release |
然后我们依次执行以下命令安装:
1 | cmake -G “Unix Makefiles” .. |
全部命令执行成功后,实际上就安装完成了,我们可以从最后的输出中看到,相关内容已经被安装到了 /usr/local/include
、/usr/local/lib
等文件夹下。
使用 Xcode 编写人脸识别程序
我们可以使用 Xcode 建立一个命令行程序,这里我们还需要处理两个问题:
- OpenCV 的引入
- 摄像头权限的获取
OpenCV 的引入
对于第一点,我们在 Build Setting 的 Search Paths 中增加 Header 和 Library 的路径:
然后我们需要在 Build Phases 的 Link Binary With Libraries 中增加动态链接库。
我们可以点击左下角加号,选择 Add Others
然后进入 /usr/local/lib
把 OpenCV 相关的库均包含进来即可。
实际上我们可以部分引入,但是由于我们是初步上手,全部引入也可以。
摄像头权限的获取
这里如果我们直接运行我们的程序,在 macOS 最新的系统中是无法运行通过的,这里涉及到摄像头权限问题。
一般来说,对于 macOS,我们需要在运行程序的目录下声明 info.plist
, 这样程序在运行的时候系统会自动有申请权限的弹窗,对于我们测试场景下而言,我们可以这样做:
- 进入我们 Product 存放的目录(注意不是项目代码目录,可以在 Products 条目右单击
Show in Finder
) - 复制一个 info.plist(这里我们可以随便找一个本地安装的应用程序的 info.plist,一般右单击显示包内容即可看到)
- 在 info.plist 中增加
NSCameraUsageDescription
,value 即提示语,可以写比如摄像头权限的获取
。
书写并运行程序
做完上述准备工作后,我们可以写我们的人脸识别程序了,这里给出一个成功运行的代码示例(参考了网上的一些例子):
1 |
|
这里值得注意的是,我们这里使用的人脸识别分类器是 OpenCV 安装后自带的,你本机的目录可能并不是这一个(这个路径实际上安装好 OpenCV 之后会打印在控制台)。
正常情况下,以上程序可以直接编译执行。