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通过索引遍历列表的方法
May 04 Python
Python写的一个简单监控系统
Jun 19 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
Linux中Python 环境软件包安装步骤
Mar 31 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
python引入不同文件夹下的自定义模块方法
Oct 27 Python
Python常用爬虫代码总结方便查询
Feb 25 Python
python实现批量修改服务器密码的方法
Aug 13 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
Python3.6 中的pyinstaller安装和使用教程
Mar 16 Python
解决flask接口返回的内容中文乱码的问题
Apr 03 Python
python能做哪些生活有趣的事情
Sep 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实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
JavaScript继承方式实例
2010/10/29 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
p5.js绘制创意自画像
2019/11/04 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
Python实现的石头剪子布代码分享
2014/08/22 Python
Python MySQLdb Linux下安装笔记
2015/05/09 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
Python3内置模块random随机方法小结
2019/07/13 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
python随机模块random使用方法详解
2020/02/14 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
什么是URL
2015/12/13 面试题
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
2014年话务员工作总结
2014/11/19 职场文书
土地租赁协议书
2015/01/29 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
委托书范本格式
2019/04/18 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers