0. 写在最前面

本文持续更新地址:https://haoqchen.site/2019/02/28/log-system/

你的Star是作者坚持下去的最大动力哦~~~

本文介绍了使用dlib的人脸检测、对齐、识别功能加上OpenCV的XML文件读写功能实现了一个登录系统。可以实现用户的用户名、密码、人脸特征注册、登录、数据的本地保存等功能。目前只实现了命令行版本,需要界面可以自己开发。

github地址:https://github.com/HaoQChen/log_system

本文将不再介绍dlib以及OpenCV的安装,强烈建议仔细看一下官网的要求!!!

1. dlib相关

dlib官网介绍:
Dlib is a modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++ to solve real world problems. It is used in both industry and academia in a wide range of domains including robotics, embedded devices, mobile phones, and large high performance computing environments. Dlib's open source licensing allows you to use it in any application, free of charge.

当程序运行很慢的时候http://dlib.net/faq.html#Whyisdlibslow
if you are using dlib’s face detector then you should turn on either SSE4 or AVX instructions since this makes it run much faster
可用cat /proc/cpuinfo | grep flags查看CPU支持的指令集
也可以cmake时加上命令-DUSE_AVX_INSTRUCTIONS=ON或者在CMakeLists文件中添加下面这句命令:
set(USE_AVX_INSTRUCTIONS ON)

The library is also covered by the very liberal Boost Software License so feel free to use it any way you like. However, if you use dlib in your research then please cite its Journal of Machine Learning Research paper when publishing.

注意事项描述了一些全局定义。

代码风格,作者有自己一套严格的代码风格,如果想贡献代码,只能按照要求来

主页右边的The Library下是将各个模块进行分类,可以根据需要进行查找

对dlib的所有组件进行测试

cd dlib/test
mkdir build
cd build
cmake ..
cmake --build . --config Release
./dtest --runall

2. 人脸相关examples

建议仔细看下代码:

  • face_detection_ex:用经典HOG特征+线性分类器+图像金字塔+滑动窗口检测。来源于fhog_object_detector_ex,该检测器还可以用于其他的刚体检测,人脸模型已经训练好,可以直接用。
  • dnn_mmod_face_detection_ex:基于CNN的人脸检测,模型已经训练好。效果要比face_detection_ex好。但需要更多的计算资源,所以意味着需要运行在有GPU的电脑。没有GPU根本跑不了。。。我8G内存+10G交换空间,内存99%,交换空间也去到70%。
  • face_landmark_detection_ex:使用face_detection_ex的检测方法来得到人脸区域。然后根据文章One Millisecond Face Alignment with an Ensemble of Regression Trees by Vahid Kazemi and Josephine Sullivan, CVPR 2014这篇文章的方法来找到人脸轮廓,找人脸轮廓时使用的是iBUG 300-W数据集,该数据集不能商用,你也可以自己用train_shape_predictor_ex训练模型
  • dnn_face_recognition_ex:举例说明如何使用训练好的模型来进行人脸识别,该模型在标准LFW人脸识别基准中达到99.38%准确率。该example其实是用相关函数进行人脸聚类。基于dnn_imagenet_ex稍微修改的模型。
  • webcam_face_pose_ex:仅仅只是将face_landmark_detection_ex改成输入为OpenCV's VideoCapture对象。

不建议将libdlib.a拿出来然后自己链接这个静态库。最后链接的时候会有很多依赖关系需要添加,建议直接按照examples的方法add_subdirectory(../dlib dlib_build),这样可以将这些依赖关系也一并包含进来。虽然这样会增加一点点文件大小,但无关痛痒。

3. log_system

  • 获取特征
    如何获取人脸的128维特征请看log_system.cpp的这个函数:
    bool GetFaceDescriptor(const dlib::matrix<dlib::rgb_pixel>& img, matrix<float,0,1>& fd)

  • 特征比对
    使用余弦相似度作为评判标准

  • 数据本地保存与读取
    使用OpenCV的FileStorage类实现按格式保存到XML文件。使用的是官方文档中所说的map的格式,即feature间使用{}括号来实现人名、密码、人脸特征的存储。当然你也可以扩展声纹、性别等。

  • dlib与OpenCV间的数据转换

matrix<float,0,1>->cv::Mat

toMat(matrix)

cv::Mat->matrix<float,0,1>

cv_image<float> cfd(mat);
matrix<float> dfd(dlib::mat(cfd));
//or
cv_image<bgr_pixel> image(mat);
matrix<rgb_pixel> matrix;
assign_image(matrix, image);

剩下一些基本逻辑test.cpp已经说得很清楚了,也可以看下CMakeLists文件。本工程在Ubuntu1404 64bit下测试成功,相信移植到其他系统也是可以的

喜欢我的文章的话Star一下呗Star

版权声明:本文为白夜行的狼原创文章,未经允许不得以任何形式转载

转载于:https://www.cnblogs.com/HaoQChen/p/11048587.html

dlib+OpenCV实现人脸登录系统相关推荐

  1. python表情识别程序_Python+Dlib+Opencv实现人脸采集并表情判别功能的代码

    一.dlib以及opencv-python库安装 介于我使用的是jupyter notebook,所以在安装dlib和opencv-python时是在 这个命令行安装的 dlib安装方法: 1.若可以 ...

  2. 基于百度云人脸识别API与opencv的人脸识别系统

    基于百度云人脸识别API与opencv的人脸识别系统 简介 弄这个东西是因为参加了学校的项目,第一次开发做的不是很好. 本系统是基于百度云人脸识别API.opencv级联器.PYQT5进行开发.百度云 ...

  3. 基于OpenCV的人脸 考勤系统

                  详细的设计流程点击链接: https://wenku.baidu.com/view/871e4bb7974bcf84b9d528ea81c758f5f71f2952?fr= ...

  4. 基于OpenCV的人脸识别系统的pyhon源代码

    本论文主要阐述了基于OpenCV的人脸识别原型系统.基于生物特征识别的身份认证方法有指纹.掌纹.眼睛虹膜.人脸等,其中,由于人脸的稳定性和可见性,人脸识别的研究与应用成为热点,本文针对出租公寓安全管理 ...

  5. python使用opencv实现人脸识别系统

    1.首先安装过python环境,在这里就不过说    检测是否安装成功如下,在cmd中输入Python     2.安装numpy 现在开始安装numpy,打开cmd,输入pip install nu ...

  6. 基于face recognition OpenCV 的人脸考勤系统

    人脸考勤系统客户端的主要功能有:人脸识别.网络通信.数据可视化,信息展示等:主要界面: 2.2.1 人脸识别模块 人脸识别模块是基于 face recognition 库实现的,face recogn ...

  7. 基于opencv 的人脸签到系统

    import cv2 import os import numpy as np from PIL import Image #pillow import pyttsx3 import sys impo ...

  8. Python人脸微笑识别2-----Ubuntu16.04基于Tensorflow卷积神经网络模型训练的Python3+Dlib+Opencv实现摄像头人脸微笑检测

    Python人脸微笑识别2--卷积神经网络进行模型训练目录 一.微笑数据集下载 1.微笑数据集下载 2.创建人脸微笑识别项目 3.数据集上传至Ubuntu人脸微笑识别项目文件夹 二.Python代码实 ...

  9. 微信小程序之百度人脸识别系统-人脸登录前后端代码

    前面写了人脸注册的功能.现在再来实现人脸登录的功能就要简单得多了,还是先上PHP部分的代码: PHP代码(搜索人脸库并返回对比结果) <?php date_default_timezone_se ...

  10. 基于OpenCv的人脸识别,翻车了居然识别错误。

    前言 我们身边的人脸识别有车站检票,监控人脸,无人超市,支付宝人脸支付,上班打卡,人脸解锁手机. 人脸检测是人脸识别系统组成的关键部分之一,其目的是检测出任意给定图片中的包含的一个或多个人脸,是人脸识 ...

最新文章

  1. [Java]Stack栈和Heap堆的区别(终结篇)[转]
  2. 【Visual Studio 2019】上传代码到 GitHub ( 16.9.2 版本 | 安装 GitHub 扩展插件 | 创建 Git 仓库 | 推送到远程仓库 )
  3. Docker服务器的图形显示方案
  4. luogu2770 航空路线问题 网络流
  5. 论文浅尝 - ICML2020 | 拆解元学习:理解 Few-Shots 任务中的特征表示
  6. Flutter BottomNavigationBar 三分钟实现一个常用APP首页底部导航菜单栏
  7. Qt Creator 预览QtCreator中的界面
  8. 基于人脸识别的商业大数据2
  9. PHRefreshTriggerView
  10. resin session共享 redis_Spring Boot 利用Redis实现session共享
  11. Zemax操作24--高斯光束的聚焦和传播
  12. 中职生计算机应用基础心得,关于中职计算机应用基础教学的几点心得
  13. 体系结构—C/S体系结构风格
  14. 浅谈设计师职业成长轨迹
  15. 深入学习区块链的隐私保护(四)秘密共享
  16. cmd 一键清除系统垃圾
  17. iOS 5 故事板进阶(4)
  18. 实时网速显示_实例_python
  19. C语言abs和labs函数详解和示例
  20. 带你去看《一支铅笔诞生的世界-世界经典动漫原画展》

热门文章

  1. 双目测距(二)--双目标定与矫正
  2. 前景检测算法(九)--PBAS算法
  3. Win10下VB6.0开发之错误--无法打开对象窗口和代码窗口
  4. 事务到底是隔离的还是不隔离的?
  5. MyISAM存储引擎简介
  6. CRT、ATL、MFC 三者介绍和关系
  7. 设计模式的征途—23.解释器(Interpreter)模式
  8. 新潮传媒“小趋势”背后的巨变之力
  9. TensorFlow从入门到理解(六):可视化梯度下降
  10. ScrollView滑动控制