简单说说人脸对齐操作的部分作用
人脸对齐操作的目的就是能够把检测到的水平角度不正的人脸采用数学的方式进行角度的纠正。从而,在一定程度上提升后期人脸识别的精确度。

人脸对齐操作的基本步骤

  • 人脸检测
  • 人脸关键点信息检测(眼睛,鼻子,嘴巴,下吧等…)
  • 人脸对齐

人脸对齐的方法有很多,本文只是采用dlib库提供的68点关键点信息检测的模型来实现人脸对齐操作,本人能力和技术有限,代码和思路供大家参考和学习,不足之处还请多多谅解!!互相学习!!

直接上代码
注意:需要提前安装好dlib库
(代码的功能: 批量对文件夹内的人脸照片进行人脸检测以及人脸对齐操作,并且将检测和对齐好的人脸保存至指定目录)
face_alignment.py

# -*-coding: utf-8-*-
# author: HXY
"""
采用68个关键点进行批量图片中人脸对齐操作
"""
import os
import sys
import dlib
import logging
import time
import numpy as np
from cv2 import cv2 as cv2def logset():#设置日志格式logging.basicConfig(level=logging.INFO, format='%(asctime)s -%(filename)s:%(lineno)d - %(levelname)s - %(message)s')def load_model():'''1. 加载需要对齐的人脸照片;2. 加载特征点检测模型'''current_path = os.getcwd()logging.debug(current_path + '\n')model_path = current_path + '/main/dlib_model/shape_predictor_68_face_landmarks.dat'detector = dlib.get_frontal_face_detector()landmark = dlib.shape_predictor(model_path)logging.info('Landmark model load sucessed !!!')return detector, landmarkdef face_aligniment(file_path, save_path):'''对文件夹中的照片进行批量的人脸对齐操作'''logging.info('Begin to alignment faces !!!')imgs = os.listdir(file_path)for img in imgs:img_full_path = file_path + '/' + imgbgr_imgs = cv2.imread(img_full_path)if bgr_imgs is None:logging.warn('Load pics failed !!! Please check file path !!!')exit()# 照片颜色通道转换:dlib检测的图片空间是RGB, cv2的颜色空间是BGRrgb_imgs = cv2.cvtColor(bgr_imgs, cv2.COLOR_BGR2RGB)face_location = detector(rgb_imgs, 1)if len(face_location) == 0:logging.warn('No face detected in pic: {}'.format(img_full_path))continue# 人脸关键点检测face_keypoints = dlib.full_object_detections()for location in face_location:face_keypoints.append(landmark(rgb_imgs, location))# 人脸对齐alignmented_face = dlib.get_face_chips(rgb_imgs, face_keypoints, size=120)logging.info('Alignment face sucessed: {}'.format(img_full_path))# 保存对齐后的人脸照片for image in alignmented_face:rgb_img = np.array(image).astype(np.uint8)bgr_img = cv2.cvtColor(rgb_img, cv2.COLOR_RGB2BGR)cv2.imwrite(save_path + str(img.split('.')[0]) + '.jpg', bgr_img)cv2.destroyAllWindows()if __name__ == '__main__':logset()detector, landmark = load_model()save_path = 'aligmented/'if not os.path.exists(save_path):os.mkdir(save_path)start = time.time()face_aligniment(file_path='./main/alignment', save_path=save_path)end = time.time()logging.info('Operate Finished !!! Costed time:{} s'.format(end-start))

(ps: 使用代码时,只需要修改需要对齐操作的人脸照片路径、照片存储路径以及68_points模型的路径即可)

对齐效果图展示:

  • 原图
  • 对齐后的人脸

人脸对齐--采用dlib库的68_face_landmark进行人脸对齐操作相关推荐

  1. CV:利用cv2+dlib库自带frontal_face_detector(人脸征检测器)实现人脸检测与人脸标记之《极限男人帮》和《NBA全明星球员》

    CV:利用cv2+dlib库自带frontal_face_detector(人脸征检测器)实现人脸检测与人脸标记之<极限男人帮>和<NBA全明星球员> 目录 输出结果 设计思路 ...

  2. CV之FR:基于cv2和dlib库自带frontal_face_detector(人脸征检测器)利用landmarks.dat文件实现人脸检测与人脸标记之《极限男人帮》和《NBA全明星球员》案例应用

    CV之FR:基于cv2和dlib库自带frontal_face_detector(人脸征检测器)利用landmarks.dat文件实现人脸检测与人脸标记之<极限男人帮>和<NBA全明 ...

  3. 基于dlib库关键点检测(图片和视频)demo

    环境win10,python3.9,dlib-19.22.9 安装dlib库存在很多问题,尤其是在win10上,记录了存在的问题,供参考: dlibyou俩个版本,一个是使用到GPU和cuda的版本 ...

  4. python摄像头跟随人脸_Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例

    1. 引言 在某些场景下,我们不仅需要进行实时人脸检测追踪,还要进行再加工:这里进行摄像头实时人脸检测,并对于实时检测的人脸进行初步提取: 单个/多个人脸检测,并依次在摄像头窗口,实时平铺显示检测到的 ...

  5. 【dlib库】进行人脸检测+人脸关键点检测+人脸对齐

    原图像: 1. 人脸检测 import cv2 import dlib import matplotlib.pyplot as plt # 获取图片 my_img = cv2.imread('my_i ...

  6. 人脸验证(图片/视频) tensorflow、pytorch框架、dlib库(face_recognition)和opencv库————附带详细步骤和代码,可实际运行

    文章目录 0 背景与结果 1 准备知识 2 tensorflow进行人脸识别(AlexNet.视频/图像) 3 pytorch进行人脸识别(fasterrcnn,图片) 4 dlib库(face_re ...

  7. 基于Dlib库的人脸表情分析与识别——Python

    本项目主要由包含我在内的四名成员共同完成:孙明喆.吴震.张晨.张明 项目介绍,及可执行文件.模型文件.详细报告均在GitHub中可以查看: GitHub 关于项目的详细介绍,可能过些日子在复习时候会有 ...

  8. dlib库包的介绍与使用,opencv+dlib检测人脸框、opencv+dlib进行人脸68关键点检测,opencv+dlib实现人脸识别,dlib进行人脸特征聚类、dlib视频目标跟踪

    文章目录: 1 dlib库介绍 2 dlib人脸检测:绘制出人脸检测框 2.1 dlib人脸检测源码 2.2 opencv + dlib 人脸检测 2.3 dlib人脸检测总结 3 dlib人脸关键点 ...

  9. Dlib库中实现正脸人脸关键点(landmark)检测的测试代码

    Dlib库中提供了正脸人脸关键点检测的接口,这里参考dlib/examples/face_landmark_detection_ex.cpp中的代码,通过调用Dlib中的接口,实现正脸人脸关键点检测的 ...

  10. Dlib库中实现正脸人脸检测的测试代码

    Dlib库中提供了正脸人脸检测的接口,这里参考dlib/examples/face_detection_ex.cpp中的代码,通过调用Dlib中的接口,实现正脸人脸检测的测试代码,测试代码如下: #i ...

最新文章

  1. 解决Word出错--一打开就反复重启的问题
  2. 1119 Pre- and Post-order Traversals (30 分)【难度: 难 / 知识点: 树的构建】
  3. Salesforce 开发整理(十)项目部署总结
  4. 《解剖PetShop》系列之三
  5. eclipse 快捷键收藏
  6. 判断一个二叉树是不是对称二叉树
  7. [转]使用C#开发一个简单的P2P应用
  8. 在 Windows 容器中使用 gMSA
  9. intel编译器linux2020依赖,▲记录▲ linux下intel的ifort编译器下载安装及配置
  10. QT第三方串口类Win_QextSerialPort,串口工具插拔后无法继续使用问题
  11. latex生成的pdf论文在打印时页码混乱的解决方法
  12. (最完美)MIUI12系统的Usb调试模式在哪里开启的步骤
  13. python isin_python numpy isin用法及代码示例
  14. 计算机科学系班服主题,高校流行班服“设计风”
  15. 战略规划,要这么做才对!
  16. java实现图片去掉水印
  17. 一个时代的印记:还记得那些年我们逃课去的网吧
  18. VxWorks6.7新建bootrom工程
  19. 国内有名的汽车与交通调查研究咨询公司情况
  20. 腾讯第一批开发工程师徐钢武回忆道【曾几何时我真的认为代码是这样的】

热门文章

  1. 微信公众号文章排版编辑器推荐
  2. Uniapp实现实时音视频的基础美颜滤镜功能
  3. iOS GPUImage 自定义美颜滤镜
  4. 跨数据库同步方案汇总
  5. pdf签名无效解决办法_我花了一整天测试了20+款PDF工具,进来评评谁是MVP
  6. qqxml图片代码_分享三款高级qqxml消息卡片代码
  7. 爬虫第十一式:用selenium爬取民政部行政区划代码
  8. android fps 检测工具,Android FPS监测 方法总结
  9. 小米电视4s android,小米电视系列ROOT教程(含4A,4S,4X等Android6.0.1版机型)
  10. 第二代支付系统专题之报文篇(一)小额支付报文完整版(含二代新增功能业务说明)