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(Tornado)模拟登录小米抢手机
Nov 12 Python
Python易忽视知识点小结
May 25 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
对Python中type打开文件的方式介绍
Apr 28 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
Python获取航线信息并且制作成图的讲解
Jan 03 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
May 15 Python
PyQt QCombobox设置行高的方法
Jun 20 Python
Python3 使用selenium插件爬取苏宁商家联系电话
Dec 23 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
Jul 01 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
May 27 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安全配置详细说明
2011/09/26 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
Ext 今日学习总结
2010/09/19 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
input输入框内容实时监测(附代码)
2017/08/15 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
浅谈Python中数据解析
2015/05/05 Python
python实现的系统实用log类实例
2015/06/30 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
2019/08/28 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
一些PHP的面试题
2015/05/06 面试题
c语言常见笔试题总结
2016/09/05 面试题
物业客服专员岗位职责
2013/11/30 职场文书
厂办主管岗位职责范本
2014/02/28 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
总经理岗位职责范本
2015/04/01 职场文书
Python基础之条件语句详解
2021/06/16 Python
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript
box-shadow单边阴影的实现
2023/05/21 HTML / CSS