python利用dlib获取人脸的68个landmark


Posted in Python onNovember 27, 2019

(1) 单人脸情况

import cv2
import dlib

path = "1.jpg"
img = cv2.imread(path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#人脸检测画框
detector = dlib.get_frontal_face_detector()
# 获取人脸关键点检测器
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
#获取人脸框位置信息
dets = detector(gray, 1)#1表示采样(upsample)次数 0识别的人脸少点,1识别的多点,2识别的更多,小脸也可以识别
for face in dets:
  shape = predictor(img, face) # 寻找人脸的68个标定点
  # 遍历所有点,打印出其坐标,并圈出来
  for pt in shape.parts():
    pt_pos = (pt.x, pt.y)
    cv2.circle(img, pt_pos, 2, (0, 0, 255), 1)#img, center, radius, color, thickness

  cv2.imshow("image", img)

cv2.waitKey(0)
cv2.destroyAllWindows()

(2) 多人脸情况

import cv2
import dlib

path1 = "zxc.jpg"
img = cv2.imread(path1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#人脸检测画框
detector = dlib.get_frontal_face_detector()
# 获取人脸关键点检测器
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
#获取人脸框位置信息
dets = detector(gray, 1)#1表示采样(upsample)次数 0识别的人脸少点,1识别的多点,2识别的更多,小脸也可以识别

for i in range(len(dets)):
  shape = predictor(img, dets[i]) # 寻找人脸的68个标定点
  # 遍历所有点,打印出其坐标,并圈出来
  for pt in shape.parts():
    pt_pos = (pt.x, pt.y)
    cv2.circle(img, pt_pos, 2, (0, 0, 255), 1)#img, center, radius, color, thickness

cv2.imshow("image", img)

cv2.waitKey(0)#等待键盘输入
cv2.destroyAllWindows()

(3) 获取电脑摄像头实时识别标定

import cv2
import dlib
import numpy as np

cap = cv2.VideoCapture(0)#打开笔记本的内置摄像头,若参数是视频文件路径则打开视频
cap.isOpened()

def key_points(img):
  points_keys = []
  PREDICTOR_PATH = "shape_predictor_68_face_landmarks.dat"
  detector = dlib.get_frontal_face_detector()
  predictor = dlib.shape_predictor(PREDICTOR_PATH)
  rects = detector(img,1)

  for i in range(len(rects)):
    landmarks = np.matrix([[p.x,p.y] for p in predictor(img,rects[i]).parts()])
    for point in landmarks:
      pos = (point[0,0],point[0,1])
      points_keys.append(pos)
      cv2.circle(img,pos,2,(255,0,0),-1)
  return img

while(True):
  ret, frame = cap.read()#按帧读取视频,ret,frame是cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。
  # gray = cv2.cvtColor(frame)
  face_key = key_points(frame)
  cv2.imshow('frame',face_key)
  if cv2.waitKey(1) & 0xFF == ord('q'):
    break

cap.release()#释放摄像头
cv2.destroyAllWindows()#关闭所有图像窗口

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

Python 相关文章推荐
简单介绍Python中的RSS处理
Apr 13 Python
Python实现批量将word转html并将html内容发布至网站的方法
Jul 14 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
Jun 20 Python
python中的随机函数小结
Jan 27 Python
用Eclipse写python程序
Feb 10 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
python3使用GUI统计代码量
Sep 18 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 Python
详解Anaconda 的安装教程
Sep 23 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 Python
python中numpy.empty()函数实例讲解
Feb 05 Python
python opencv实现图像配准与比较
Feb 09 Python
python随机数分布random均匀分布实例
Nov 27 #Python
python取均匀不重复的随机数方式
Nov 27 #Python
python中栈的原理及实现方法示例
Nov 27 #Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 #Python
python队列原理及实现方法示例
Nov 27 #Python
Python numpy.zero() 初始化矩阵实例
Nov 27 #Python
python双端队列原理、实现与使用方法分析
Nov 27 #Python
You might like
php中一个有意思的日期逻辑处理
2012/03/25 PHP
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
javascript demo 基本技巧
2009/12/18 Javascript
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
python异常和文件处理机制详解
2016/07/19 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
Python元组知识点总结
2019/02/18 Python
从0开始的Python学习016异常
2019/04/08 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
python实现数字炸弹游戏
2020/07/17 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
Ajax请求总共有多少种Callback
2016/07/17 面试题
中学生期末评语
2014/02/03 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
合作意向协议书范本
2014/03/31 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
售后客服个人自我评价
2014/09/14 职场文书
裁员通知
2015/04/25 职场文书
七年级作文之下雨天
2019/12/23 职场文书
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB
Python中Schedule模块使用详解 周期任务神器
2022/04/19 Python