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查询Mysql时返回字典结构的代码
Jun 18 Python
python回调函数的使用方法
Jan 23 Python
python根据京东商品url获取产品价格
Aug 09 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
详解python 拆包可迭代数据如tuple, list
Dec 29 Python
Python enumerate索引迭代代码解析
Jan 19 Python
python判断完全平方数的方法
Nov 13 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
Jan 07 Python
使用Python内置模块与函数进行不同进制的数的转换
Apr 26 Python
python 爬虫如何实现百度翻译
Nov 16 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 Python
python爬取2021猫眼票房字体加密实例
Feb 19 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 header功能的使用
2013/10/28 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
php广告加载类用法实例
2014/09/23 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
非常不错的一个javascript 类
2006/11/07 Javascript
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
浅谈javascript的调试
2015/01/28 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
python实现多线程抓取知乎用户
2016/12/12 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
python如何获取apk的packagename和activity
2020/01/10 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
挪威手表购物网站:Klokker
2016/09/19 全球购物
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
读书心得体会
2013/12/28 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
新闻通讯稿模板
2015/07/22 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
浅谈JavaScript作用域
2021/12/06 Javascript