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中常用操作字符串的函数与方法总结
Feb 04 Python
vscode 远程调试python的方法
Dec 01 Python
Python实现的knn算法示例
Jun 14 Python
python中的turtle库函数简单使用教程
Jul 23 Python
解决项目pycharm能运行,在终端却无法运行的问题
Jan 19 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
django 读取图片到页面实例
Mar 27 Python
Python 保存加载mat格式文件的示例代码
Aug 04 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Jan 27 Python
如何使用PyCharm及常用配置详解
Jun 03 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
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
JS实现小星星特效
2019/12/24 Javascript
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
浅谈Python处理PDF的方法
2017/11/10 Python
20个常用Python运维库和模块
2018/02/12 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
皮尔·卡丹巴西官方商店:Pierre Cardin
2017/07/21 全球购物
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
遗体告别仪式主持词
2014/03/20 职场文书
增员口号大全
2014/06/18 职场文书
世界环境日活动总结
2015/02/11 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
Django显示可视化图表的实践
2021/05/10 Python
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python