基于Dlib、OpenCV开发人脸识别程序的开发建议
前言
在去年十月的时候参加了一个小比赛,做了一个人脸识别程序并很意外地获得省里面的一等奖,视频演示链接在这里,有同学想要做这方面的毕业设计or课程设计,发一篇博客来分享一下当时的开发过程。
项目简介
可以看一下我的这个博客
开发流程
一:安装Dlib的环境
这部分有点麻烦,不论是Windows还是linux,我都花了一段时间去配置,部分python依赖包需要连接外网才能顺利下载下来,这部分就靠自己摸索吧,多试试就可以成功了!
Linux的我找不到当时配置时参考的博客了
二:阅读Dlib库的接口、使用方法
这里我没有阅读Dlib的官方文档,我直接阅读了ageitgey的Github的源码部分、以及他的文档,参考他的源码去调用Dlib的人脸识别接口的,最终包装成自己的库。
自己封装的库文件地址,可以参考一下,里面有详尽的注释(写的不好,轻喷)
三:开发
这部分就看自己的需求啦
这里可以提一点小见解:
- 做简单一点的人脸识别,直接用人脸检测算子+人脸编码然后对比人像编码的距离就可以了。
- 我开发的时候是为了尽量避免角度对人脸造成的影响,就在Dlib官方的基础上加入了人脸矫正功能
- 我做的是一个比较low、但确实有用的人脸矫正算法
- 就是基于眼睛、鼻子上检测到的关键点,对图像进行简单的水平旋转
- 矫正后理论上可以提升编码的稳定性(因为尽可能排除角度因素了)
- 这部分的代码在
Faces.py
的330行左右
- 对于一些人头偏移角度过大可能造成人脸检测算子检测不到的问题,因为我的使用场景特殊,是100%有人脸,所以我会在检测不到人像的时候对图像旋转几个角度再检测,我管它叫旋转鲁棒性(其实是当时看到一篇论文的题目有这个字眼,自己就搬过来用了)。至于是否采用这样的操作,可以结合自己的使用场景来决定。
基于Dlib、OpenCV开发人脸识别程序的开发建议的更多相关文章
- 基于OpenCV的人脸识别[iOS开发笔记(2)]
开始了OpenCV的试水工作了... 1.Get ready 在OpenCV中我们会使用函数cv::CascadeClassifier 来进行人脸检测.但是在使用本函数之前我们需要添加一个XML文件对 ...
- 基于opencv的人脸识别程序
1. 解析opencv自带人脸识别源码(……/opencv-3.1.0/samples/cpp/facedetect.cpp) @ 操作系统:Ubuntu 15.04 OpenCV版本:3.1.0 # ...
- java+opencv实现人脸识别程序记录
结果 基本实现了识别的功能.基本的界面如下 界面长得比较丑,主要是JavaSwing写界面比较麻烦,写个菜单栏都要那么多代码.目前不打算改了. 实现的思路是:使用opencv中自带的OpenCVFra ...
- 基于 Python + OpenCV 进行人脸识别,视频追踪代码全注释
先来普及一下概念, 计算机对人脸是如何识别的呢? 或者说图像是如何识别的.主要是获取单张图片的特征值记录了特征值以后,如果下一张图片来了以后两张图片特征值进行对比,如果相似度很高那么计算机就认定这两个 ...
- 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【二】人脸预处理
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 转:基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴等)【模式识别中的翘楚】
文章来自于:http://blog.renren.com/share/246648717/8171467499 基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴 ...
随机推荐
- 查找SQL 存储过程、触发器、视图!
ALTER proc [dbo].[SP_SQL](@ObjectName sysname) as set nocount on ; declare @Print nvarchar(max)-- ...
- LA 3266 田忌赛马
https://vjudge.net/problem/UVALive-3266 题意: 田忌赛马,赢一局得200两银子,输一局赔200两银子,平局不赔不赚,问最多能赚多少银子. 思路: 先排序,然后比 ...
- 常见文档一览表 -httpclient
httpclient http://www.yeetrack.com/?p=779 虫师『性能测试』文章大汇总 https://www.cnblogs.com/fnng/archive/2012/08 ...
- python 压缩tar 包
import tarfile import os def make_targz(output_filename, source_dir): print("doing!") with ...
- html禁止文本输入框记录输入记录,单击input出现输入过的记录
其实方法很简单,只需要在input文本输入框中加一条autocomplete="off"属性即可. <input type="text" name=&qu ...
- 趣味工具figlet
sudo apt-get install figlet $ echo "Hello" | figlet _ _ _ _ | | | | ___| | | ___ | |_| |/ ...
- 《A_Pancers团队》———团队项目原型设计与开发
一.实验目的与要求 (1)掌握软件原型开发技术: (2)学习使用软件原型开发工具:本实验中使用墨刀 二.实验内容与步骤 任务1:针对实验六团队项目选题,采用适当的原型开发工具设计团队项目原型: 任务2 ...
- jQuery实时监听input的值变化(input的值产生变化才会触发事件)
//用于监听input的值变化(input的值产生变化才会触发事件) (function ($) { $.fn.watch = function (callback) { return this.ea ...
- Codeforces 496D - Tennis Game
496D - Tennis Game 思路:枚举每个t,求出对应的满足条件的s. 代码: #include<bits/stdc++.h> using namespace std; #def ...
- 算法笔记--sg函数详解及其模板
算法笔记 参考资料:https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html sg函数大神详解:http://blog.csdn.net/l ...