iOS 利用 openCV 下简单实现人脸遮盖

4,113 阅读2分钟

废话开篇:简单实现一下利用 openCV 下简单实现人脸遮盖的功能,openCV 是一个 C++ 的库,用之前需要根据官网文档自制一下 Framework,因为 cocopods 下的 openCV 库里没有包含人脸识别 face 相关的库,所以,如果想简单实现人脸识别功能体验一下的话就需要将 OpenCV_Contrib 里面的 face 库与 openCV 主库放到一起进行编译。

一、 实现效果图

曾经年少 2021-12-12 09.29.32.gif

二、自制 openCV 下的 Framework

如果不需要用人脸识别的功能,那么就直接 cocopods 导入即可:

image.png

当然,这里人脸覆盖的功能下并没有用到 OpenCV_Contrib 下的 face 人脸识别库。

个人后面的功能实现里有人脸识别,所以这里就编译一个富含人脸识别的 Framework。(但是后面实现的人脸识别的效果表现一般)。

1、下载 openCV 源码库 、OpenCV_Contrib 源码库

地址: openCV 地址:OpenCV_Contrib

2、合并 OpenCV_Contrib 下的人脸识别 face 模块到 openCV 下进行编译成库

下载好的库

image.png

(1)、将 opencv_contrib-4.3.0 -> modules -> face 库复制到 opencv-4.3.0 -> modules 下。
(2)、找到 opencv-4.3.0 的 platforms 文件夹

image.png

里面包含的是各个平台的编译指令,找到 ios

image.png

打开 build_framework.py 文件

image.png

打开该文件,修改一下里面的编译架构,这个里真机就保留了 arm64,现在再编译的出来的 Framework 出来的就是 arm64x86i386 架构下的合并库,其实对于真机来说,模拟器下的是不需要的。(打包过程有点慢,因为会对每个架构都进行编译最后合并)

image.png

(3)、下载安装 cmake 工具,进行编译

image.png

打开它,查看它终端命令

image.png

image.png

opencv-4.3.0 文件夹下新建一个 buildX 文件夹,用来保存编译好的 Framework

打开终端,cdbuildX 下,输入 :

PATH="/Applications/CMake.app/Contents/bin":"$PATH" 

配置环境变量

进行编译库,输入:

python /Users/xxx/Desktop/openTest/opencv-4.3.0/platforms/ios/build_framework.py ios

耐心等个半小时,在之前新建的 buildX 文件夹下就会有编译好的 Framework

image.png

三、实现人脸遮盖功能

1、将编译好的 opencv2.framework 拖进工程

image.png

2、新建 WSLOpenVC 类,实现功能

WSLOpenVC.h

image.png

WSLOpenVC.mm

image.png

image.png

image.png

image.png

image.png

image.png

3、外部调用

image.png

四、总结与思考

上面的代码都是按照思路去实现的,肯定有不完善的地方或者有更简单的方法,代码拙劣,大神勿笑。