1 68 和 51 关键点

2 人脸对齐

a 定位图片中的人脸

b 提取人脸区域的图片并保存

c 人脸对齐操作并保存

3 代码

import dlib
import face_recognition
import math
import numpy as np
import cv2def rect_to_bbox(rect):"""获得人脸矩形的坐标信息"""# print(rect)x = rect[3]y = rect[0]w = rect[1] - xh = rect[2] - yreturn (x, y, w, h)def face_alignment(faces):# 预测关键点predictor = dlib.shape_predictor("dat/shape_predictor_68_face_landmarks.dat")faces_aligned = []for face in faces:rec = dlib.rectangle(0, 0, face.shape[0], face.shape[1])shape = predictor(np.uint8(face), rec)# left eye, right eye, nose, left mouth, right mouthorder = [36, 45, 30, 48, 54]for j in order:x = shape.part(j).xy = shape.part(j).y# 计算两眼的中心坐标eye_center =((shape.part(36).x + shape.part(45).x) * 1./2, (shape.part(36).y + shape.part(45).y) * 1./2)dx = (shape.part(45).x - shape.part(36).x)dy = (shape.part(45).y - shape.part(36).y)# 计算角度angle = math.atan2(dy, dx) * 180. / math.pi# 计算仿射矩阵RotateMatrix = cv2.getRotationMatrix2D(eye_center, angle, scale=1)# 进行仿射变换,即旋转RotImg = cv2.warpAffine(face, RotateMatrix, (face.shape[0], face.shape[1]))faces_aligned.append(RotImg)return faces_aligneddef test(img_path):unknown_image = face_recognition.load_image_file(img_path)# 定位图片中的人脸face_locations = face_recognition.face_locations(unknown_image)# 提取人脸区域的图片并保存src_faces = []src_face_num = 0for (i, rect) in enumerate(face_locations):src_face_num = src_face_num + 1(x, y, w, h) = rect_to_bbox(rect)detect_face = unknown_image[y:y+h, x:x+w]src_faces.append(detect_face)detect_face = cv2.cvtColor(detect_face, cv2.COLOR_RGBA2BGR)cv2.imwrite("face_align_result/face_" + str(src_face_num) + ".jpg", detect_face)# 人脸对齐操作并保存faces_aligned = face_alignment(src_faces)face_num = 0for faces in faces_aligned:face_num = face_num + 1faces = cv2.cvtColor(faces, cv2.COLOR_RGBA2BGR)cv2.imwrite("face_align_result/face_align_" + str(face_num) + ".jpg", faces)passif __name__ == '__main__':test("8.jpg")print(" SUCCEED !!! ")pass

5 原图及结果

原图:

结果:

dlib人脸对齐(python)相关推荐

  1. dlib人脸对齐源码详解

    一般的人脸识别应用通常都包括三个过程: 1 人脸detect,这一步主要是定位人脸在图像中的位置,输出人脸的位置矩形框 2 人脸shape predictor,这一步主要是找出眼睛眉毛鼻子嘴巴的68个 ...

  2. python dlib人脸识别_python3+dlib人脸识别及情绪分析

    一.介绍 我想做的是基于人脸识别的表情(情绪)分析.看到网上也是有很多的开源库提供使用,为开发提供了很大的方便.我选择目前用的比较多的dlib库进行人脸识别与特征标定.使用python也缩短了开发周期 ...

  3. python︱利用dlib和opencv实现简单换脸、人脸对齐、关键点定位与画图

    这是一个利用dlib进行关键点定位 + opencv处理的人脸对齐.换脸.关键点识别的小demo.原文来自于<Switching Eds: Face swapping with Python, ...

  4. 【Dlib】人脸检测、特征点检测、人脸对齐、人脸识别

    本文是利用dlib库,进行人脸检测.特征点检测.人脸对齐.所有前提是假设已经安装了dlib. 参考链接: 1.http://developer.51cto.com/art/201801/564529. ...

  5. python dlib人脸检测_Python 3 利用 Dlib 实现人脸检测和剪切

    0. 引言 利用 Python 开发,借助 Dlib 库进行人脸检测 / face detection 和剪切: 将检测到的人脸剪切下来,依次排序平铺显示在新的图像上: 实现的效果如 图1 所示,将 ...

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

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

  7. <Python>PyQt5+OpenCv+Dlib人脸合成程序

    Dlib人脸合成 1 概述: 2 软件环境版本 3 程序实现 4 视频演示: 更新日志: 202211031332:添加初版 1 概述: Dlib是开源且免费的代码,其中有用于人脸识别.合成的功能. ...

  8. 实战 | 如何用最快的速度学会Dlib人脸识别开发?

    作者 | 小宋是呢 来源 | 转载自小宋是呢 项目GitHub地址:https://github.com/xiaosongshine/dlib_face_recognition 1.背景介绍 Dlib ...

  9. [深度应用]·实战掌握Dlib人脸识别开发教程

    [深度应用]·实战掌握Dlib人脸识别开发教程 个人网站--> http://www.yansongsong.cn/ 项目GitHub地址--> https://github.com/xi ...

最新文章

  1. UML for Java Programmers之dx实战
  2. 迟语寒:组队学习的那些事
  3. apache vhost
  4. 【开源】Caffe、TensorFlow、MXnet三个开源库对比
  5. 机器性能这么好,为什么点击右键弹出菜单还这么慢?
  6. c语言socket原理,Socket底层原理
  7. python基础一 -------如何在列表字典集合中根据条件筛选数据
  8. Dws同步mysql数据_数据库技术丨GaussDB(DWS)数据同步状态查看方法
  9. hdu-5834 Magic boy Bi Luo with his excited tree(树形dp)
  10. leetcode417. 太平洋大西洋水流问题(bfs)
  11. 解决 | VS 2015右键项目添加新项中没有web窗体等选项
  12. python快递费用计算_Python制作快递查询系统,来感受到了Python的强大!
  13. 统计字符串中汉字的个数,字符串中字符自然排序
  14. 剪切音频matlab_怎样用matlab分割音频文件(wav)或其他
  15. android ppsspp 存档位置,小鸡模拟器游戏存档在哪个文件夹
  16. 模拟游戏--鸭子的种类
  17. 笔记本用HDMI转VGA转接线后,显示器没声音的解决方法
  18. 嵌入式面试常见问题(三)
  19. 如何用js对url做urlencoding处理?
  20. 局域网即时通讯软件怎么部署

热门文章

  1. 搭建nlp_server服务器
  2. C++学习日记#2——幂法求矩阵的主特征值
  3. linux编程 —— shell编程脚本常用语法总结 【学习笔记】
  4. idea打包提示程序包不存在如何解决?
  5. 安装linux分区设置密码,安装和使用Gnome Disk Utility在Linux上加密硬盘分区
  6. 第十三周总结——认清自己
  7. tcpmux TCP 端口服务多路复用
  8. C#添加、隐藏Word段落
  9. matlab绘制二维曲线图
  10. DAY 9 | 自学前端第九天