gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python3利用Dlib19.7实现人脸68个特征点标定由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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 。

需要调用的库:  。

?
1
2
3
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.源码 。

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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 。

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

原文链接:http://www.cnblogs.com/AdaminXie/p/8137580.html 。

最后此篇关于python3利用Dlib19.7实现人脸68个特征点标定的文章就讲到这里了,如果你想了解更多关于python3利用Dlib19.7实现人脸68个特征点标定的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com