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

article/2025/9/23 14:55:40

一、人脸对齐

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

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查询模块、函数等的使用方法

 


http://chatgpt.dhexx.cn/article/WcXZYyTo.shtml

相关文章

人脸识别中常用的人脸检测和人脸对齐

人脸检测和人脸对齐是人脸识别的前提&#xff0c;也是进行一切人人脸相关的人脸项目的开始步骤&#xff0c;本文将从常用的人脸检测的数据集&#xff0c;以及现在公用的比较好的方法开始讲述。 人脸检测常用的数据集 人脸检测的测试数据库有很多&#xff0c;这里仅选择FDDB和…

人脸对齐—级联回归模型和深度学习模型

人脸对齐任务即根据输入的人脸图像&#xff0c;自动定位出面部关键特征点&#xff0c;如眼睛、鼻尖、嘴角点、眉毛以及人脸各部件轮廓点等&#xff0c;如下图所示。 这项技术的应用很广泛&#xff0c;比如自动人脸识别&#xff0c;表情识别以及人脸动画自动合成等。由于不同的姿…

MTCNN 人脸检测 人脸对齐

MTCNN 人脸检测 人脸对齐 flyfish 总体 Loss Stage 0:Image Pyramid 假设图片的宽度是640,高度是480 MIN_DET_SIZE12 minsize70 factor0.709 0.1714285710.709 那么金字塔窗口大小分别是 wh:110,83 wh:78,59 wh:56,42 wh:40,30 wh:28,21 wh:20,1计算过程如下 从640和480…

人脸检测实战终极:使用 OpenCV 和 Python 进行人脸对齐

使用 OpenCV 和 Python 进行人脸对齐 这篇博文的目的是演示如何使用 OpenCV、Python 和面部标志对齐人脸。 给定一组面部标志&#xff08;输入坐标&#xff09;&#xff0c;我们的目标是将图像扭曲并转换为输出坐标空间。 在这个输出坐标空间中&#xff0c;整个数据集中的所…

人脸预处理:人脸检测+人脸对齐

1 简介 对于人脸识别任务&#xff0c;人脸预处理至关重要。首先我们需要检测出图像中的人脸&#xff0c;然后通过人脸相似性变换得到对齐后的标准人脸。然后在对其进行人脸识别。在人脸识别过程中&#xff0c;往往检测到的人脸是倾斜的。相似性变换根据检测到的关键点和目标点…

dlib人脸配准(人脸对齐)

dlib人脸配准有两种方式。 一种是使用 get_face_chip()方法&#xff0c;使用5个关键点模型来进行配准&#xff0c;这种方法Dlib已经提供了完整的接口(imutils里也有类似函数&#xff0c; face_utils.FaceAligner&#xff0c;代码放在最后面)另一种是自己使用68点关键点模型&am…

基于OpenCV的人脸对齐步骤详解及源码实现

目录 1. 前言2. 人脸对齐基本原理与步骤3. 人脸对齐代码实现 1. 前言 在做人脸识别的时候&#xff0c;前期的数据处理过程通常会遇到一个问题&#xff0c;需要将各种人脸从不同尺寸的图像中截取出来&#xff0c;再进行人脸对齐操作&#xff1a;即将人脸截取出来并将倾斜的人脸…

人脸识别 (4) 人脸对齐

参考&#xff1a;FaceDetector/face_align.ipynb at master faciallab/FaceDetector GitHub 中文&#xff1a;从零开始搭建人脸识别系统&#xff08;二&#xff09;&#xff1a;人脸对齐 - 知乎 Face Alignment Step-by-Step 1、Align Faces by Spatial Transform Operati…

OpenCV实现人脸对齐

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 一、人脸对齐介绍 在人脸识别中有一个重要的预处理步骤-人脸对齐&#xff0c;该操作可以大幅度提高人脸识别的准确率与稳定性&#xff0c;但是早期的OpenCV版本不支持人…

人脸对齐(一)--定义及作用

参考&#xff1a; http://www.thinkface.cn/thread-4354-1-1.html http://www.thinkface.cn/thread-4488-1-1.html&#xfeff;&#xfeff; 人脸对齐任务即根据输入的人脸图像&#xff0c;自动定位出面部关键特征点&#xff0c;如眼睛、鼻尖、嘴角点、眉毛以及人脸各部件轮…

人脸关键点对齐

转&#xff1a;https://www.jianshu.com/p/e4b9317a817f 摘要&#xff1a; 从传统方法到深度学习方法&#xff0c;对人脸关键点定位/人脸对齐的发展进行梳理&#xff0c;对该领域中经典的方法&#xff0c;最新成果进行汇总&#xff0c;并给出相应的paper原文&#xff0c;项目主…

人脸对齐介绍

转自&#xff1a;https://cloud.tencent.com/community/article/532672 一、 人脸对齐&#xff0c;也叫做人脸特征点检测&#xff0c;图为人脸特征点例子 二、 人脸对齐有哪些应用&#xff1f; 1 五官定位 2 表情识别 3 人脸漫画、素描生成 4 增强现实 5 换脸 6 3D建模 三、 人…

常见的人脸对齐方法 python

人脸对齐 1. 通过Dlib库 1.1.环境需求&#xff1a; opencv-python dlib下载dlib库的68关键点文件&#xff1a; http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2 然后解压后得到shape_predictor_68_face_landmarks.dat。 其次&#xff0c;下面可能需要有一…

QGIS中也有“fishnet”——QGIS怎么生成渔网

QGIS堪称Mac上的ArcGIS&#xff0c;免费小巧&#xff0c;插件丰富&#xff0c;比ArcGIS更容易上手。今天分享的是如何在QGIS中生成规则网格&#xff0c;也就是ArcGIS中的fishnet功能怎么在QGIS中完美实现。 # 环境声明&#xff1a;QGIS3.10 MacOS10.15.6 # 分享背景&#xff…

ArcMap Fishnet生成规则网格

在利用ArcGIS处理数据时&#xff0c;有时需要对整个工作区域进行规则网格划分&#xff0c;这个在ArcGIS中是一件非常简单的事情&#xff0c;现在就将利用ArcGIS生成规则网格的步骤详细的介绍一下。 首先我有一个工作的范围&#xff0c;比如图一所示的范围&#xff1a; 我要在研…

POJ 1408 Fishnet

题目大意&#xff1a; 有一个1*1的正方形&#xff0c;分别给出下&#xff0c;上&#xff0c;左&#xff0c;右边每个边上的n个点&#xff0c;对边对应点连线&#xff0c;问这些线段相交的最大的四边形面积是多少&#xff08;面积最大的定义是必须当前面积内没有更小的四边形内…

创建渔网工具

创建渔网&#xff08;create fishnet&#xff09;工具是指创建由矩形像元组成的渔网。输出可以是折线或面要素。创建渔网需要三条基本信息&#xff1a;渔网的空间范围、行数和列数以及旋转的角度。要指定这些基本信息可通过多种方法。例如&#xff0c;您可能不确定准确的行数和…

ARCGIS怎么在地图上绘制长宽500m*500m的fishnet

用的是ArcGIS 10.6的版本。 参考教程&#xff1a;https://my.oschina.net/u/4416039/blog/3308651 首先先导入深圳市的shp文件 Layers右键&#xff0c;点击Properties 需要将坐标系改成投影坐标系 点击Projected Coordinate Systems 点击UTM 点击WGS 1984 选择WGS 1984 UT…

fishboat

渔船产品功能说明文档1.0 线上地址&#xff1a;http://101.200.121.215:9090/ git前端: https://gitee.com/cinblx/fishboat-ui.git git后端&#xff1a;https://gitee.com/cinblx/fishboat-server.git 产品介绍 为什么使用该产品 该产品致力于两方面。1.实现基础功能&#xff…

文献阅读笔记5——《Composited FishNet: Fish Detection and Species Recognition From Low-Quality ...》

《Composited FishNet: Fish Detection and Species Recognition From Low-Quality Underwater Videos》 写文章模板论文 Abstact 重要意义&#xff1a;水下视频中鱼类的自动检测和识别对于渔业资源评估和生态环境监测具有重要意义。 问题和挑战&#xff1a;由于水下图像质量…