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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
python的Template使用指南
Sep 11 Python
python实现简单的计时器功能函数
Mar 14 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
python3实现多线程聊天室
Dec 12 Python
python实现一个函数版的名片管理系统过程解析
Aug 27 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
python十进制转二进制的详解
Feb 07 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
python可以用哪些数据库
Jun 22 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 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正则匹配汉字的方法介绍
2013/04/25 PHP
php实现无限级分类
2014/12/24 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
解读Python中degrees()方法的使用
2015/05/18 Python
Python工程师面试必备25条知识点
2018/01/17 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
幼儿园中班新学期寄语
2014/01/18 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
介绍信格式
2015/01/30 职场文书
工作能力自我评价2015
2015/03/05 职场文书
春晚观后感
2015/06/11 职场文书
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫
golang为什么要统一错误处理
2022/04/03 Golang