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 相关文章推荐
windows下安装python paramiko模块的代码
Feb 10 Python
Python深入学习之对象的属性
Aug 31 Python
简单总结Python中序列与字典的相同和不同之处
Jan 19 Python
Python网站验证码识别
Jan 25 Python
Python+MongoDB自增键值的简单实现
Nov 04 Python
python利用标准库如何获取本地IP示例详解
Nov 01 Python
python 用lambda函数替换for循环的方法
Jun 09 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
python读写Excel表格的实例代码(简单实用)
Dec 19 Python
浅析python函数式编程
Sep 26 Python
python实现录音功能(可随时停止录音)
Oct 26 Python
Linux系统下升级pip的完整步骤
Jan 31 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
php在线打包程序源码
2008/07/27 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
js a标签点击事件
2017/03/30 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
寻找网站后台地址的python脚本
2014/09/01 Python
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
Python生成随机数组的方法小结
2017/04/15 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
opencv与numpy的图像基本操作
2019/03/08 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
Python实现粒子群算法的示例
2021/02/14 Python
继承公证书样本
2014/04/04 职场文书
前台岗位职责
2015/02/13 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
户外亲子活动总结
2015/05/08 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
Redis 配置文件重要属性的具体使用
2021/05/20 Redis
vscode内网访问服务器的方法
2022/06/28 Servers