一、人脸对齐

训练好的模型库文件(替换你的模型文件位置)

import cv2
import dlib
import matplotlib.pyplot as pltpath="D:\python\Lib\site-packages\cv2\photo.jpg"
img=cv2.imread(path)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#人脸分类器
detector=dlib.get_frontal_face_detector()
#获取人脸检测器
#predictor = dlib.shape_predictor(r"D:\python\Lib\site-packages\face_recognition_models\models\shape_predictor_68_face_landmarks.dat")
predictor = dlib.shape_predictor(r"D:\python\Lib\site-packages\face_recognition_models\models\shape_predictor_5_face_landmarks.dat")dets=detector(gray,1)#第二个参数代表将原图放大多少倍在进行检测,提高小人脸的检测效果for face in dets:# 使用predictor进行人脸关键点检测 shape为返回的结果shape=predictor(img,face) #寻找人脸的5个标定点#遍历所有点,打印出其坐标,并圈出来for pt in shape.parts():pt_pos=(pt.x,pt.y)img=cv2.circle(img,pt_pos,3,(255,0,0),1)plt.imshow(img)
plt.axis('off')
plt.show()
#运行结果:5点

5点运行结果

68点运行结果


二、人脸识别

import cv2
import face_recognition
import matplotlib.pyplot as pltknown_image=cv2.imread("D:\python\Lib\site-packages\cv2\qiu.jpg")
known_image=face_recognition.load_image_file("D:\python\Lib\site-packages\cv2\qiu.jpg")unknown_image=cv2.imread("D:\python\Lib\site-packages\cv2\photo.jpg")
unknown_image=face_recognition.load_image_file("D:\python\Lib\site-packages\cv2\photo.jpg")known_encoding=face_recognition.face_encodings(known_image)[0]
unknown_encoding=face_recognition.face_encodings(unknown_image)[0]results=face_recognition.compare_faces([known_encoding],unknown_encoding,tolerance=0.6)
if results[0]==True:print('匹配成功,该未知图片与已有图片人脸可匹配!')
else:print('匹配失败!')
print(known_encoding)
print(unknown_encoding)
plt.imshow(known_image)
plt.axis('off')  #去掉坐标轴
plt.show()plt.imshow(unknown_image)
plt.axis('off')  #去掉坐标轴
plt.show()

更换图片后  识别成功

调整人脸识别的容错率和敏感度

如果一张脸识别出不止一个结果,那么这意味着他和其他人长的太像了(本项目对于小孩和亚洲人的人脸识别准确率有待提升)。可以把容错率调低一些,使识别结果更加严格。

通过传入参数 tolerance 来实现这个功能,默认的容错率是0.6,容错率越低,识别越严格准确。


三、使用dir、inspect查看一个module的成员、类、文档

1.dir的用法——查询一个类或者对象的所有属性和方法

dir() 将对象的所有属性、方法以列表形式返回

函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。

实例

>>>dir()   #  获得当前模块的属性列表
['__builtins__', '__doc__', '__name__', '__package__', 'arr', 'myslice']>>> dir([ ]) # 查看列表的方法
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>>>> dir(max)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']

2.inspect模块

使用inspect.getmembers(obj)这个方法能够获取到更详尽的自省信息,且可读性更佳,下面将其和dir内置函数进行比较:

import inspect
#示例对象--某个函数
def foo(a: int, b: str) -> int:return a + int(b)dir(foo)
-->['__annotations__', '__call__', '__class__',...]inspect.getmembers(foo)
-->[
('__annotations__', {'a': <class 'int'>, 'b': <class 'str'>, 'return': <class 'int'>}),
('__call__', <method-wrapper '__call__' of function object at 0x032C7B70>),
('__class__', <class 'function'>),
...]

可以看到使用dir()仅仅获得一个字符串列表,而使用inspect.getmembers()可以获得每个属性的类型信息。

3.还可以通过python docs查询模块、函数等的使用方法

python练习3 人脸对齐以及dir、inspect的用法相关推荐

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

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

  2. dlib人脸对齐(python)

    1 68 和 51 关键点 2 人脸对齐 a 定位图片中的人脸 b 提取人脸区域的图片并保存 c 人脸对齐操作并保存 3 代码 import dlib import face_recognition ...

  3. 实战:使用OpenCV+Python+dlib为人脸生成口罩

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|AI算法与图像处理 本文使用OpenCV dlib库生成口 ...

  4. (三)混合边缘AI人脸对齐

    目录 介绍 对齐算法 算法的实现 向检测器添加人脸对齐 修改对齐算法 下一步 在这里,我们将简要说明如何在Raspberry Pi上安装MTCNN.TensorFlow和Keras.然后我们在视频文件 ...

  5. tensorflow精进之路(二十八)——人脸识别(下)(MTCNN人脸检查和人脸对齐+CASIA-WebFace数据集模型)

    1.概述 这一讲,我们来训练自己的人脸识别模型. 2.下载CASIA-WebFace人脸数据集 CASIA-WebFace人脸数据集包含了10575个人的494414张人脸图片,需要在 http:// ...

  6. tensorflow精进之路(二十七)——人脸识别(中)(MTCNN人脸检查和人脸对齐+FaceNet模型)

    1.概述 上一讲,我们讲了人脸识别的基本原理,这一讲,我们用tensorflow来实现它. 2.下载LFW人脸数据集 2.1.LFW数据集简介 LFW人脸数据集主要用来研究非受限情况下的人脸识别问题, ...

  7. opencv中mean函数耗时_使用OpenCV进行人脸对齐

    在人脸识别项目中,如果图片中人脸的方向各不一样且相差很大,这样会影响人脸识别的准确率.所以在实际人脸检测项目中,在人脸识别的前一步往往会先进行人脸对齐.人脸对齐可以看作是数据normalization ...

  8. SDM人脸对齐系列一:数据预处理

    人脸对齐是人脸识别系统中很重要的一个环节,SDM是传统人脸对齐算法中性能较为不错的一种,在今天这个深度学习如火如荼的时代,SDM依旧具有一定的优势.SDM相比深度网络具有模型小,速度快等优点.尽管SD ...

  9. AI换脸-简单换脸、人脸对齐、关键点定位与画图

    ```bash简单换脸.人脸对齐.关键点定位与画图有人将其进行中文翻译也有将其进行一定改编有以下两个案例:1.<川普撞脸希拉里(基于 OpenCV 的面部特征交换)-2>变脸变脸贴图:从这 ...

  10. 人脸识别篇---人脸对齐

    人脸对齐 安装环境 dlib 脚本实现 运行代码 实现效果 运行问题 安装环境 dlib windows10安装dlib 在anaconda3下激活相应的环境 conda install -c con ...

最新文章

  1. Docker 入门到实践笔记2
  2. 看我是如何利用升级系统一键GetShell
  3. java设计模式_状态模式
  4. java 通配符 泛型_java中泛型之类型通配符(?)
  5. 不会但一定要了解的方面,python列表解析方式
  6. MySQL高级 - 并发参数调整
  7. kaggle中的Two-Stage比赛规则以及metadata数据的使用规定
  8. 能使用html/css解决的问题就不要使用JS
  9. 天天红单app下载安装_App内测好帮手,稳定内测分发就选择TF签名
  10. SAP License:从前台接待看企业文化
  11. java xml annotation_Annotation与XML配置ID生成策略
  12. Linux启动nacos成功日志_nacos初体验踩坑与填坑篇
  13. 基于Redis实现分布式单号,分布式ID(自定义规则生成)
  14. ~~遗传算法最最最最简单的实例~~
  15. python 漏洞扫描器_自动扫描全网漏洞的扫描器
  16. LHDC、AAC、aptx、ldac、wha哪个更好,各有什么优缺点?
  17. asp二进制mysql_asP 读取二进制数据库
  18. 毕业实习大作业(Android-Spring Boot-MySQL 前后端分离项目 快速上手实例)
  19. DRG/DIP分组器HIS、电子病历、病案等系统调用接口说明,支持java c#等多种语言,有c#代码参考
  20. 【Linux】详解linux中 Nginx 常见502错误问题解决办法

热门文章

  1. 2017CS231n李飞飞深度视觉识别笔记(八)——深度学习 软件
  2. 基于KMP与Levenshtein模糊匹配算法的银行联行号查询(转)
  3. Spring Cloud微服务架构图
  4. Agilent GeneSpring GX V11.5_win32_win64扩展生物学分析软件
  5. chrome android版 插件下载,谷歌chrome安卓版
  6. MarkDown下载及学习笔记
  7. mindoc制作思维导图
  8. 微信小程序:实现按钮点击事件
  9. 工业机械臂直线插补相关记录
  10. 凸函数与优化,以及海森矩阵