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

 更新时间:2018年02月26日 14:05:55   作者:TimeStamp  
这篇文章主要为大家详细介绍了python3利用Dlib19.7实现人脸68个特征点标定,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

0.引言

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

实现的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()函数中的 半径、线宽 等参数使得输出满足需求方便查看;

结果:

图2 测试结果1 

  

图3 测试结果2

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

相关文章

  • Python解决鸡兔同笼问题的方法

    Python解决鸡兔同笼问题的方法

    这篇文章主要介绍了Python解决鸡兔同笼问题的方法,分析了鸡兔同笼问题的原理与解决思路,并给出了Python实现的代码,非常具有参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • 微信跳一跳python自动代码解读1.0

    微信跳一跳python自动代码解读1.0

    这篇文章主要为大家详细介绍了微信跳一跳python自动代码解读1.0,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Python深度强化学习之DQN算法原理详解

    Python深度强化学习之DQN算法原理详解

    DQN算法是DeepMind团队提出的一种深度强化学习算法,在许多电动游戏中达到人类玩家甚至超越人类玩家的水准,本文就带领大家了解一下这个算法,快来跟随小编学习一下
    2021-12-12
  • 基于Python+Flask实现一个简易网页验证码登录系统案例

    基于Python+Flask实现一个简易网页验证码登录系统案例

    当今的互联网世界中,为了防止恶意访问,许多网站在登录和注册表单中都采用了验证码技术,验证码可以防止机器人自动提交表单,确保提交行为背后有一个真实的人类用户,本文将向您展示如何使用Python的Flask框架来创建一个简单的验证码登录系统
    2023-09-09
  • numpy如何按条件给元素赋值np.where、np.clip

    numpy如何按条件给元素赋值np.where、np.clip

    这篇文章主要介绍了numpy如何按条件给元素赋值np.where、np.clip问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解

    基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解

    这篇文章主要介绍了基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 人生苦短我用python python如何快速入门?

    人生苦短我用python python如何快速入门?

    这篇文章主要教大家如何快速入门python,一个简短而全面的入门教程带你走入Python的大门,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • 用Python给文本创立向量空间模型的教程

    用Python给文本创立向量空间模型的教程

    这篇文章主要介绍了用Python给文本创立向量空间模型的教程,比如文中举例将文本中的词频转为量化的矩阵,需要的朋友可以参考下
    2015-04-04
  • 虚拟环境下搭建一个Django项目

    虚拟环境下搭建一个Django项目

    这篇文章主要为大家介绍了虚拟环境下搭建一个Django项目的实现过程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • win10下python3.5.2和tensorflow安装环境搭建教程

    win10下python3.5.2和tensorflow安装环境搭建教程

    这篇文章主要为大家详细介绍了win10下python3.5.2和tensorflow安装环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09

最新评论