一、前言:
大家好,今天给大家分享一个ffmpeg加opencv的人脸采集并做出识别的实战项目!
我先大致简单介绍一下项目的整体功能实现:
本项目核心是在Linux平台上利用摄像头采集人脸,并进行人脸识别。这个项目使用的是FFMPEG OPENCV 虹软框架完成。FFMPEG的主要工作是负责采集摄像头的数据并把摄像头数据发送给opencv。Opencv的主要工作则是把摄像头数据转换成矩阵数据。虹软的主要功能则是利用Opencv的数据进行数据检测和识别并且和人脸数据库进行比较,如果识别成功则显示这个人的姓名,并把数据显示出来。目前整体项目只是简单的一个demo,后期会根据需求来进行开发扩展的,比如添加ui界面来查看!
二、开发环境准备:
- (1) Ubuntu16.04
- (2)4.1的版本的FFmpeg
- (3)opencv 3.4.15的版本
- (4)虹软代码框架
为了不那么浪费时间,这里面的环境搭建,我就不在这里说明,我会在专门的群里发给大家,这里我只展示一下整个工程运行过程,也就是一个readme:
第一步:首先运行asfort_face_insert的程序,这个程序的主要功能是读取一张人脸图片。并把人脸图片的特征读取出来,然后把人脸特征存储到数据库里面。具体的运行程序参数如图:
代码语言:javascript复制./asfort_face_insert face_path face_name
- 其中face_path是人脸图片的路径,如./face_lib/face01.png
- face_name是录入人脸的名称,如:Harry,James
如果运行成功则会出现下面的打印信息:
当打印日志出现Get Face Feature Success则代表插入成功,此时人脸数据库就有了数据。(小提示:这里的人脸图片最好利用电脑自带的摄像头进行拍照,或者用自己的一个正面照即可)。
第二步:现在我们的数据库已经有了人脸数据,那下一步我们直接运行我们的主程序:ffmpeg_camera_asfort(运行方式:./ ffmpeg_camera_asfort),运行成功的话会看到,一个电脑自带的摄像头出现,并且会把自己的名字显示在一个矩形框里面。如下图:
而此时运行成功的日志如下:
(若成功打开摄像头则会打印Success Open Camera)
这里要注意的是,在运行ffmpeg_camera_asfort的时候,一定要在Linux虚拟机里面把摄像头打开,打开方式:
首选项->可移动设备->选择摄像头设备的名称(这里的摄像头名称各有不同,以自己电脑的名称为主,如我的摄像头名称是:IMC Networks Integrated Camera)->再选择连接。此时在虚拟机里面摄像头就已经打开了。这一步非常重要,如果没有这一步,程序直接报错。报错信息如下:
- (core dump是指程序错误,退出)