先上实验结果

原文连接

'''
人脸关键点检测——dlib
1  dlib.get_frontal_face_detector()  获取人脸检测器
2  dlib.shape_predictor()  预测人脸关键点
'''
# import cv2
#上面的无法自动补全代码
import cv2.cv2 as cv2
import matplotlib.pyplot as plt
import dlib
import numpy as np#读取图片
img = cv2.imread("6.png")#调用人脸检测器
detector = dlib.get_frontal_face_detector()#加载 预测关键点模型(68个关键点)
predictor = dlib.shape_predictor("shape_predictor_81_face_landmarks.dat")#灰度化
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#人脸检测
faces = detector(gray, 1)  # 1:将图片放大一倍,便于识别人脸; 0 原始图像a = np.arange(81)
print("a:",a)
b = np.arange(81)if (len(faces) != 0):# 找到脸颊区域for i in range(len(faces)):landmarks = np.matrix([[p.x, p.y] for p in predictor(img, faces[i]).parts()])for idx, point in enumerate(landmarks):# 68点的坐标pos = (point[0, 0], point[0, 1])# ROI:脸颊区域a = a.tolist()  # 将矩阵转换成列表。b = b.tolist()a[idx] = point[0, 0]b[idx] = point[0, 1]a = np.array(a)  # 将数据转化为矩阵b = np.array(b)# 额头区域x1 = int(a[76])y1 = int(b[19])x2 = int(a[73])y2 = int(b[73])if (x1 < 0): # 防止人脸转动,x1位置超出图像x1 = 0forehead_ROI = img[y2:y1, x1:x2]cv2.imshow("forehead_ROI",forehead_ROI)cv2.waitKey()# 脸颊区域x1 = int((a[2] + a[4]) / 2)y1 = int((b[2] + b[4]) / 2)y2 = int((b[2] + b[23]) / 2)x2 = int((a[12] + a[14]) / 2)if (x1 < 0):x1 = 0cheek_ROI = img[y2:y1, x1:x2]cv2.imshow("cheek_ROI",cheek_ROI)cv2.waitKey()# 检测整个人脸区域for k, d in enumerate(faces):[x1, x2, y1, y2] = [d.left(), d.right(), d.top(), d.bottom()]face_ROI = img[y1:y2, x1:x2]cv2.imshow("face_ROI",face_ROI)cv2.waitKey()#显示整个效果
plt.imshow(img[:, :, ::-1]) # BGR 2 RGB
plt.title("81_face_landmarks")
plt.axis("off")
# cv2.imwrite("dlib_81_face_landmarks10.jpg", img)
plt.show()

'''
人脸关键点检测——dlib
1  dlib.get_frontal_face_detector()  获取人脸检测器
2  dlib.shape_predictor()  预测人脸关键点
'''
# import cv2
#上面的无法自动补全代码
import cv2.cv2 as cv2
import matplotlib.pyplot as plt
import dlib
import numpy as np#读取图片
img = cv2.imread("6.png")#调用人脸检测器
detector = dlib.get_frontal_face_detector()#加载 预测关键点模型(68个关键点)
predictor = dlib.shape_predictor("shape_predictor_81_face_landmarks.dat")#灰度化
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#人脸检测
faces = detector(gray, 1)  # 1:将图片放大一倍,便于识别人脸; 0 原始图像a = np.arange(81)
b = np.arange(81)if (len(faces) != 0):# 找到脸颊区域for i in range(len(faces)):landmarks = np.matrix([[p.x, p.y] for p in predictor(img, faces[i]).parts()])for idx, point in enumerate(landmarks):# 68点的坐标pos = (point[0, 0], point[0, 1])# ROI:脸颊区域a = a.tolist()  # 将矩阵转换成列表。b = b.tolist()a[idx] = point[0, 0]b[idx] = point[0, 1]a = np.array(a)  # 将数据转化为矩阵b = np.array(b)# 额头区域x1 = int(a[76])y1 = int(b[19])x2 = int(a[73])y2 = int(b[73])if (x1 < 0): # 防止人脸转动,x1位置超出图像x1 = 0forehead_ROI = img[y2:y1, x1:x2]cv2.rectangle(img, (x1,y2), (x2,y1), (0,255,0), 1)# cv2.imshow("forehead_ROI",forehead_ROI)# cv2.waitKey()# 脸颊区域x1 = int((a[2] + a[4]) / 2)y1 = int((b[2] + b[4]) / 2)y2 = int((b[2] + b[23]) / 2)x2 = int((a[12] + a[14]) / 2)if (x1 < 0):x1 = 0cheek_ROI = img[y2:y1, x1:x2]cv2.rectangle(img, (x1,y2), (x2,y1), (0,255,0), 1)# cv2.imshow("cheek_ROI",cheek_ROI)# cv2.waitKey()# 检测整个人脸区域for k, d in enumerate(faces):[x1, x2, y1, y2] = [d.left(), d.right(), d.top(), d.bottom()]face_ROI = img[y1:y2, x1:x2]cv2.rectangle(img, (x1, y2), (x2, y1), (255, 0, 0), 1)  # 蓝色# cv2.imshow("face_ROI",face_ROI)# cv2.waitKey()cv2.imshow("ROI",img)
cv2.waitKey()

这个ROI区域确定是根据关键点索引,比较麻烦。引入imutils库,更加简单
查看imutils库使用
查看 face_utils的使用

利用dlib81人脸关键点提取额头脸颊ROI相关推荐

  1. MTCNN人脸检测及人脸关键点提取(学习记录)

    我看了很多关于MTCNN框架的文章,但基本上都是一概而过,本文章记录MTCNN每一步的流程及附上注释的代码. MTCNN框架主要由三大子网络组成,即P-Net,R-Net,O-Net. 三大子网络的区 ...

  2. 人脸识别之人脸关键点(仅供本人参考)

    深度学习人脸关键点检测方法----综述 转自人脸关键点检测综述 不知道为什么在ubuntu下知呼中的图片无法显示 人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别.表情分析.三维人 ...

  3. 人脸关键点检测综述(含论文、数据集、方法等)

    人脸关键点 人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别.表情分析.三维人脸重建及三维动画等其它人脸相关问题的前提和突破口.近些年来,深度学习(http://www.rainc ...

  4. 关键点提取:face_recognition、疲劳检测、人脸校准、人脸数据库

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 人脸识别功能实现的原理介绍与算法介绍 人脸识别:人脸数据集 A ...

  5. 利用PCL库从点云数据生成深度图像及关键点提取

    利用PCL库从点云数据生成生成深度图像及关键点提取 利用PCL库从点云数据生成深度图像及关键点提取 本想利用标准点云数据库分割成若干块,利用标准点云数据生成深度图像作为数据库用来验证算法,目前效果不是 ...

  6. 【技术综述】人脸关键点检测的数据集与核心算法

    人脸关键点检测是诸如人脸识别.表情分析.三维人脸重建等其它人脸相关任务的基础.近些年来,深度学习方法已被成功应用到了人脸的关键点检测,本章将介绍深度学习方法在人脸关键点检测方向的研究.包括人脸关键点任 ...

  7. CNN人脸关键点检测

    CNN人脸关键点检测 参考文献<Deep Convolutional Network Cascade for Facial Point Detection>\ 摘要 提出一种利用精心设计的 ...

  8. CVPR 2021 | 五官复原效果惊艳,腾讯ARC利用GAN人脸先验来解决

    作者|机器之心编辑部 来源|机器之心 人脸复原 (Face Restoration) 是指从低质量的人脸中复原得到高清的人脸.真实世界中的人脸复原是一个很有挑战的任务,因为降质 (degradatio ...

  9. 68点人脸关键点定位

    人脸对齐/人脸关键点基本概念 根据输入的人脸图像,自动定位出面部关键特征点,如眼睛,鼻尖,嘴角点,眉毛以及人脸各部件轮廓点等 想要表示形状信息时,使用的是点的集合(向量) 2D人脸:5 / 21 / ...

最新文章

  1. LIBSVM的使用方法以及参数注释总结
  2. Android获取程序路径 (/data/data/appname)
  3. halcon自动对焦算法
  4. select * 排除字段_编写 SQL 的排除联接
  5. iOS里面MVC模式详解
  6. mqtt c语言 单片机,MQTT--单片机实现即时通讯
  7. 《Java程序员,上班那点事儿》 - 书摘精要
  8. 从 Angular 移植到 React,代码量减少了 20%
  9. 道琼斯重大数据库泄密?真的假的!不过,数据库爆闻可不止这一条……
  10. 数组(有序数组)的公共部分
  11. Javascript(八)javascript页面重定向
  12. 本地视频做成html网页,使用HTML和JavaScript播放本地的媒体(视频音频)文件的方法...
  13. C#修改内存制作外挂
  14. activitimq集群搭建_activemq集群的搭建
  15. 仿微信评论显示更多与收起
  16. 官方正式发布 Java 16
  17. LM07丨细聊期货横截面策略
  18. 【spring Cloud 入门-4】简单的服务实例健康自检
  19. 教你用python在excel中“画画”
  20. iOS开发者必备:自己总结的iOS、mac开源项目及库

热门文章

  1. 【系统架构设计师】第一章:操作系统(1.1.1---1.1.2)操作系统的分类和结构
  2. 汽车专场 | 新能源汽车动力电池PACK CAE分析实例解读
  3. 浙大计算机考研分数线2016,2016年浙江大学考研复试分数线已经公布
  4. 【Redis】用windows客户端连接服务器上的Redis
  5. WannaCry病毒爆发并未对微软品牌造成太大影响
  6. mybatis与hibernate的对比
  7. PWA(Progressive Web App)入门系列:(一)PWA简介
  8. 神经网络中的BN操作(常见正则化处理)
  9. Stduino学习(二十六)水位传感器模块
  10. 氢os android 7.0,氢OS 3.0正式推送!基于Android 7.0,简洁纯净