Python 检测人脸特征点(Dlib)

分享一个使用 Python 提取人脸特征点的例子

一. 先看结果

001.jpg
原图如下
002.jpg

图片来自网络,如有侵权请联系作者删除

二. 主要使用了dlib 库

  1. 安装 dlib 库,直接使用编译好的 dlib 库。也可以从源码编译,比较麻烦。安装命令
sudo pip install dlib --verbose
  1. 人脸特征点提取代码如下,代码量也很少
import sys
import os
import dlib
import glob
import cv2
import time

if len(sys.argv) != 3:
    print(
        "第一个参数为模型路径\n"
        "第二个参数为图片路径\n"
        "使用方法如下:\n"
        "python ./face_landmark_detection.py shape_predictor_68_face_landmarks.dat ./test.jpg\n"
        "可以从以下网址下载训练好的模型:\n"
        "http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2")
    exit()

#模型路径
predictor_path = sys.argv[1]
#图片路径
face_path = sys.argv[2]

detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(predictor_path)
print("正在处理的图片: {}".format(face_path))

img = cv2.imread(face_path)
dets = detector(img, 1)
print("检测到的人脸个数: {}".format(len(dets)))

for k, d in enumerate(dets):
    #提取出体征点
    shape = predictor(img, d) 
    for pt in shape.parts():
        pt_pos = (pt.x, pt.y)
        #将特征点绘制到图片
        cv2.circle(img, pt_pos, 2, (203, 192, 255), -1)

#显示图片 
cv2.imshow("image", img)
nowTime = time.localtime()
filename = "result_" + str(nowTime.tm_mday)+str(nowTime.tm_hour)+str(nowTime.tm_min)+str(nowTime.tm_sec)+".jpg"
cv2.imwrite(filename, img)
#在选中当前图片窗口下,等待任意键被按下
key = cv2.waitKey(0)   
cv2.destroyAllWindows()
  1. 执行命令
 python ./face_landmark_detection.py ./shape_predictor_68_face_landmarks.dat ./test.jpg 

face_landmark_detection.py 为 Python 程序脚本文件,shape_predictor_68_face_landmarks.dat 为训练好的模型,可以从 模型地址 下载;test.jpg 为要提取特征点的图片

显示图片后,如果要关掉窗口,要选中图片窗口,按任意键退出,不是在控制台输入任意键。如果无法退出,按 ctr + z 组合键强制退出,或者在程序坞鼠标右键选中强制退出。

三 . 小结

这次分享了使用 Python 提取人脸特征点的一个例子,主要用到了 Dlib。关于 Dlib 可以在 Dlib 官网Dlib github 仓库,获取更多相关信息

欢迎扫码关注公众号,一起讨论交流
0010.jpg

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值