使用Python进行面部识别-600学习网
600学习网终身会员188,所有资源无秘无压缩-购买会员
人脸识别正成为软件开发的一个趋势。它有助于识别人脸,并使应用程序更加健壮。在本教程中,我们将使用Python和face_recognition库创建一个简单的人脸识别。
对于开发环境,我们将使用Visual Studio社区版。
现在我们有了使用C++进行桌面开发的Visual Studio,我们可以开始我们的项目了。
使用Visual Studio打开新目录并创建新的python环境。我们将使用venv。打开集成终端并编写pythonmvenv-venv。然后输入venv/bin/activate.ps1激活环境。这是PowerShell的。
现在我们已经完成了虚拟环境的创建,让我们开始提取依赖项。为此,我们需要opencv和face_recognition。在终端中使用pip
pip安装opencv-python人脸识别
人脸识别是一个使用最高级dlib库的库。我们已经准备好编写一些代码并识别一些人脸。
为了创建一个新的python文件,我们将调用文件missingPerson.py,假设我们将使用我们的应用程序来匹配丢失的人。导入我们的依赖项并编写前几行。
导入cv2
将numpy导入为np
导入人脸识别
导入操作系统
from face_recognition.api导入face_distance
假设我们所有的照片都存储在我们的服务器存储中,我们需要首先将所有人的图像放入我们的应用程序并读取它们。
路径=”失踪人员”
图像=〔〕
失踪人员=〔〕
missingPersonsList=os.listdir(路径)
对于missingPersonsList中的missingPerson:
curImg=cv2.imread(f’{path}/{missing Person}’)
images.append(curImg)
missingPersons.append(os.path.splitext(missingPerson)[0])
打印(缺少人员)
在本节中,我们将使用opencv读取所有失踪人员的图像,并将其附加到我们的失踪人员列表中。
在我们从存储器中读取所有丢失的面部图像后,我们需要找到面部代码,以便我们可以使用CNN面部检测器在图像中创建面部边界框的二维阵列。
def find编码(图像):
encodeList=〔〕
对于图像中的img:
img=cv2.cvt颜涩(img,cv2.COLOR_BGR2RGB)
encode=人脸识别。人脸编码(img)[0]
encodeList.append(编码)
打印(编码列表)
返回encodeList
encodeListKnown=findEncodings(图像)
打印(“编码完成”)
我们将二维数组存储在已知人脸代码列表中。这将需要几分钟。
现在我们已经掌握了所有失踪人员的面部代码,我们现在需要做的是将他们与记者的图像进行匹配。Face_rerecognition使用起来非常方便。
def findMissingPerson(encodeListKnown,reportedPerson=’found1.jpg’):
person=人脸识别加载图像文件(f’Reported Persons/{reported person})
person=cv2.cvtColor(person,cv2.COLOR_BGR2RGB)
尝试:
encodePerson=人脸识别。人脸编码(人)[0]
comparedFace=面部识别。比较面部(encodeListKnown,encodePerson)
faceDis=面部识别。面部距离(encodeListKnown,encodePerson)
匹配索引=np.argmin(面Dis)
如果comparedFace[matchIndex]:
name=失踪人员[matchIndex].upper()
打印(姓名)
返回名称
否则:
打印(“未找到”)
return False
除了IndexError为e:
打印(e)
返回e
首先,我们需要加载被报告人的图像文件并对他们的脸进行编码。剩下的是将报告的面部编码与已知的面部编码进行比较。然后,一个简单的逻辑匹配他们的索引,并返回该人是否在我们的失踪人员列表中找到。
这种人脸识别不仅用于寻找失踪人员。它可以检测和识别人脸,并且可以根据需要进行操作。
600学习网 » 使用Python进行面部识别-600学习网