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多进程编程技术实例分析
Sep 16 Python
python去除所有html标签的方法
May 05 Python
简单介绍使用Python解析并修改XML文档的方法
Oct 15 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
Jun 13 Python
python中plot实现即时数据动态显示方法
Jun 22 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
如何使用pyinstaller打包32位的exe程序
May 26 Python
django 消息框架 message使用详解
Jul 22 Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 Python
Python实现结构体代码实例
Feb 10 Python
python缩进长度是否统一
Aug 02 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 25 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进程同步代码实例
2015/02/12 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
javascript事件模型代码
2007/07/01 Javascript
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
javascript常用函数(1)
2015/11/04 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
elementUI多选框反选的实现代码
2019/04/03 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
js实现碰撞检测
2021/01/29 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
在Python中关于中文编码问题的处理建议
2015/04/08 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
python剪切视频与合并视频的实现
2020/03/03 Python
pymysql模块使用简介与示例
2020/11/17 Python
优秀英语专业毕业生求职信
2013/11/23 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
javascript canvas实现雨滴效果
2021/06/09 Javascript
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers