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交互式图形编程实例(二)
Nov 17 Python
python入门教程 python入门神图一张
Mar 05 Python
python复制文件到指定目录的实例
Apr 27 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
Django Rest framework之认证的实现代码
Dec 17 Python
Python实现繁?转为简体的方法示例
Dec 18 Python
几行Python代码爬取3000+上市公司的信息
Jan 24 Python
全面了解django的缓存机制及使用方法
Jul 22 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
浅析Python 多行匹配模式
Jul 24 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
PHP5 的对象赋值机制介绍
2011/08/02 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
Js中sort()方法的用法
2006/11/04 Javascript
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
Extjs学习笔记之七 布局
2010/01/08 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
js闭包实例汇总
2014/11/09 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
如何用RxJS实现Redux Form
2018/12/29 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
Python绘制组合图的示例
2020/09/18 Python
python os.listdir()乱码解决方案
2021/01/31 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
提拔干部考察材料
2014/05/26 职场文书
大学生学期个人总结
2015/02/12 职场文书
机关保密工作承诺书
2015/05/04 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python