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 12 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 Python
使用Python3制作TCP端口扫描器
Apr 17 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
python对excel文档去重及求和的实例
Apr 18 Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 Python
python 追踪except信息方式
Apr 25 Python
利用python下载scihub成文献为PDF操作
Jul 09 Python
从np.random.normal()到正态分布的拟合操作
Jun 02 Python
python读取mnist数据集方法案例详解
Sep 04 Python
基于Python编写简易版的天天跑酷游戏的示例代码
Mar 23 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
19个Android常用工具类汇总
2014/12/30 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
vue3.0 上手体验
2020/09/21 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python中使用dom模块生成XML文件示例
2015/04/05 Python
Python中常见的数据类型小结
2015/08/29 Python
Python中with及contextlib的用法详解
2017/06/08 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
全球性的在线商店:Vogca
2019/05/10 全球购物
接口可以包含哪些成员
2012/09/30 面试题
应届生污水处理求职信
2013/11/06 职场文书
项目管理计划书
2014/01/09 职场文书
理财投资建议书
2014/03/12 职场文书
小学语文教研活动总结
2014/07/01 职场文书
PHP RabbitMQ消息列队
2022/05/11 PHP