python3利用Dlib19.7实现人脸68个特征点标定


Posted in Python onFebruary 26, 2018

0.引言

利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68点标定,利用OpenCv进行图像化处理,在人脸上画出68个点,并标明序号;

实现的68个特征点标定功能如下图所示:

python3利用Dlib19.7实现人脸68个特征点标定

图1 人脸68个特征点的标定 

1.开发环境

python:3.6.3

dlib:19.7

OpenCv, numpy

需要调用的库: 

import dlib #人脸识别的库dlib
import numpy as np #数据处理的库numpy
import cv2 #图像处理的库OpenCv

2.设计流程

工作内容主要以下两大块:68点标定OpenCv绘点

68点标定:

借助官方的Demo(face_landmark_detection.py,在之前另一篇博客里面介绍过学习Python3 Dlib19.7进行人脸面部识别)实现;

OpenCv绘点:

介绍了用到的 画圆函数cv2.circle() 和 输出字符串函数 cv2.putText() ;

流程:

1.调用dlib库来进行人脸识别,调用预测器“shape_predictor_68_face_landmarks.dat”进行68点标定

2.存入68个点坐标

3.利用cv2.circle来画68个点

4.利用cv2.putText()函数来画数字1-68

3.源码

# 68-points
# 2017-12-28
# By TimeStamp
# #cnblogs: http://www.cnblogs.com/AdaminXie/
import dlib      #人脸识别的库dlib
import numpy as np    #数据处理的库numpy
import cv2      #图像处理的库OpenCv

# dlib预测器
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')

path="********************"

# cv2读取图像
img=cv2.imread(path+"test.jpg")

# 取灰度
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

# 人脸数rects
rects = detector(img_gray, 0)

for i in range(len(rects)):
 landmarks = np.matrix([[p.x, p.y] for p in predictor(img, rects[i]).parts()])

 for idx, point in enumerate(landmarks):
  # 68点的坐标
  pos = (point[0, 0], point[0, 1])

  # 利用cv2.circle给每个特征点画一个圈,共68个
  cv2.circle(img, pos, 5, color=(0, 255, 0))

  # 利用cv2.putText输出1-68
  font = cv2.FONT_HERSHEY_SIMPLEX
  cv2.putText(img, str(idx+1), pos, font, 0.8, (0, 0, 255), 1, cv2.LINE_AA)

cv2.namedWindow("img", 2)
cv2.imshow("img", img)
cv2.waitKey(0)

note:OpenCv的画图函数

         1. 画圆 cv2.circle( img, (p1,p2), r, (255,255,255) )

参数1:

img-

      图片对象;

参数2:

(p1,p2)-

        圆心坐标;

参数3:

r-

    半径;

参数4:

(255,255,255)-  颜色数组;  

 

2. 输出字符 cv2.putText( img,"test", (p1,p2), font, 4, (255,255,255), 2, cv2, LINE_AA )

参数1:

img-

图像对象;

参数2:

"test"-

  需要打印的字符text(数字的话可以利用str()转成字符);

参数3:

(p1,p2)-

    坐标textOrg;

参数4:

font-

字体fontFace(注意这里 font = cv2.FONT_HERSHEY_SIMPLEX);

参数5:

4-

 字号fontScale;

参数6:

(255,255,255)-   颜色数组;

参数7:

2-

  线宽thickness;

参数8:

LINE_AA-

    线条种类line_type;

*关于 颜色数组:

(255,255,255), (蓝色绿色红色),每个值都是0-255;

比如:蓝色(255,0,0),紫色(255,0,255)

可以调整cv2.circle()函数和cv2.putText()函数中的 半径、线宽 等参数使得输出满足需求方便查看;

结果:

python3利用Dlib19.7实现人脸68个特征点标定

图2 测试结果1 

python3利用Dlib19.7实现人脸68个特征点标定

图3 测试结果2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用urllib2模块获取gravatar头像实例
Dec 18 Python
python实现的登陆Discuz!论坛通用代码分享
Jul 11 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
Python环境Pillow( PIL )图像处理工具使用解析
Sep 12 Python
Python文件路径名的操作方法
Oct 30 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
Python如何将函数值赋给变量
Apr 28 Python
python3读取autocad图形文件.py实例
Jun 05 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
Django给表单添加honeypot验证增加安全性
May 06 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 #Python
python微信跳一跳系列之棋子定位像素遍历
Feb 26 #Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 #Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 #Python
python微信跳一跳系列之色块轮廓定位棋盘
Feb 26 #Python
tensorflow入门之训练简单的神经网络方法
Feb 26 #Python
基于Python实现的微信好友数据分析
Feb 26 #Python
You might like
crontab无法执行php的解决方法
2016/01/25 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
python中map、any、all函数用法分析
2015/04/21 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
谈谈python中GUI的选择
2018/03/01 Python
pandas计数 value_counts()的使用
2019/06/24 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
优秀女职工事迹材料
2014/02/06 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
亚运会口号
2014/06/20 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
自主招生自荐信范文
2015/03/04 职场文书
工作简历自我评价
2015/03/11 职场文书
电力培训学习心得体会
2016/01/11 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python