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测试驱动开发实例
Oct 08 Python
Python中逗号的三种作用实例分析
Jun 08 Python
python从入门到精通(DAY 3)
Dec 20 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 Python
详解python中init方法和随机数方法
Mar 13 Python
解决Pytorch 加载训练好的模型 遇到的error问题
Jan 10 Python
Python+OpenCV实现图像的全景拼接
Mar 05 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
Python 防止死锁的方法
Jul 29 Python
Pycharm的Available Packages为空的解决方法
Sep 18 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
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
初学Python函数的笔记整理
2015/04/07 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
Python IDE Pycharm中的快捷键列表用法
2019/08/08 Python
python开头的coding设置方法
2019/08/08 Python
Python解析json代码实例解析
2019/11/25 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
python从PDF中提取数据的示例
2020/10/30 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
总账会计岗位职责
2014/03/13 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
小学生安全保证书
2015/05/09 职场文书
校园广播站开场白
2015/06/01 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers