教你如何用Python实现人脸识别(含源代码)

 更新时间:2021年06月22日 17:14:25   作者:python588  
Python可以从图像或视频中检测和识别你的脸.人脸检测与识别是计算机视觉领域的研究热点之一.人脸识别的应用包括人脸解锁、安全防护等,医生和医务人员利用人脸识别来获取病历和病史,更好地诊断疾病,需要的朋友可以参考下

工具与图书馆

  • Python-3.x
  • CV2-4.5.2
  • 矮胖-1.20.3
  • 人脸识别-1.3.0

若要安装上述软件包,请使用以下命令。

pip install numpy opencv-python

要安装FaceRecognition,首先安装dlib包。

pip install dlib

现在,使用以下命令安装面部识别模块

pip install face_recognition

下载人脸识别Python代码

请下载python面部识别项目的源代码: 人脸识别工程代码

项目数据集

我们可以使用我们自己的数据集来完成这个人脸识别项目。对于这个项目,让我们以受欢迎的美国网络系列“老友记”为数据集。该数据集包含在面部识别项目代码中,您在上一节中下载了该代码。

建立人脸识别模型的步骤

在继续之前,让我们知道什么是人脸识别和检测。

人脸识别是从照片和视频帧中识别或验证一个人的脸的过程。

人脸检测是指在图像中定位和提取人脸(位置和大小)以供人脸检测算法使用的过程。

人脸识别方法用于定位图像中唯一指定的特征。在大多数情况下,面部图片已经被移除、裁剪、缩放和转换为灰度。人脸识别包括三个步骤:人脸检测、特征提取、人脸识别。

OpenCV是一个用C++编写的开源库.它包含了用于计算机视觉任务的各种算法和深度神经网络的实现。

1.准备数据集

创建2个目录,训练和测试。从互联网上为每个演员选择一个图片,并下载到我们的“火车”目录中。确保您所选择的图像能够很好地显示人脸的特征,以便对分类器进行分类。

为了测试模型,让我们拍摄一张包含所有强制转换的图片,并将其放到我们的“test”目录中。

为了您的舒适,我们增加了培训和测试数据与项目代码。

2.模型的训练

首先导入必要的模块。

import face_recognition as fr
import cv2
 
import numpy as np
import os

人脸识别库包含帮助人脸识别过程的各种实用程序的实现。

现在,创建2个列表来存储图像(人员)的名称及其各自的脸编码。

path = "./train/"
 
known_names = []
known_name_encodings = []
 
images = os.listdir(path)

人脸编码是一种值的矢量,它代表着脸部特征之间的重要度量,如眼睛之间的距离、额头的宽度等。

我们循环遍历火车目录中的每个图像,提取图像中的人的姓名,计算其脸编码向量,并将信息存储在相应的列表中。

for _ in images:
image = fr.load_image_file(path + _)
image_path = path + _
encoding = fr.face_encodings(image)[0]
 
known_name_encodings.append(encoding)
known_names.append(os.path.splitext(os.path.basename(image_path))[0].capitalize())

3.在测试数据集中测试模型

如前所述,我们的测试数据集只包含一个包含所有人员的图像。

使用CV2 imread()方法读取测试映像。

test_image = "./test/test.jpg"
 
image = cv2.imread(test_image)

人脸识别库提供了一种名为Face_Locations()的有用方法,它定位图像中检测到的每个人脸的坐标(左、下、右、上)。使用这些位置值,我们可以很容易地找到脸编码。

face_locations = fr.face_locations(image)
 
face_encodings = fr.face_encodings(image, face_locations)

我们循环遍历每个面部位置及其在图像中的编码。然后,我们将这种编码与“列车”数据集中的人脸编码进行比较。

然后计算人脸距离,即计算测试图像编码和训练图像编码之间的相似性。现在,我们从它选取最小值距离,表示测试图像的这张脸是训练数据集中的人之一。

现在,使用CV2模块中的方法绘制一个带有面部位置坐标的矩形。

for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
   matches = fr.compare_faces(known_name_encodings, face_encoding)
   name = ""
 
   face_distances = fr.face_distance(known_name_encodings, face_encoding)
   best_match = np.argmin(face_distances)
 
   if matches[best_match]:
       name = known_names[best_match]
 
   cv2.rectangle(image, (left, top), (right, bottom), (0, 0, 255), 2)
   cv2.rectangle(image, (left, bottom - 15), (right, bottom), (0, 0, 255), cv2.FILLED)
 
   font = cv2.FONT_HERSHEY_DUPLEX
   cv2.putText(image, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)

使用CV2模块的imShow()方法显示图像。

cv2.imshow("Result", image)

使用imwrite()方法将图像保存到当前工作目录中。

cv2.imwrite("./output.jpg", image)

释放未被释放的资源(如果有的话)。

cv2.waitKey(0)
cv2.destroyAllWindows()

Python人脸识别输出

让我们看看模型的输出。

摘要

在这个机器学习项目中,我们使用我们自己的自定义数据集,在python和OpenCV中开发了一个人脸识别模型。

到此这篇关于教你如何用Python实现人脸识别(含源代码)的文章就介绍到这了,更多相关Python人脸识别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 记一次django内存异常排查及解决方法

    记一次django内存异常排查及解决方法

    这篇文章主要给大家介绍了关于一次django内存异常排查记解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用django具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • Python通过字典映射函数实现switch

    Python通过字典映射函数实现switch

    这篇文章主要介绍了Python通过字典映射函数实现switch,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • python利用PyQt5设计鼠标显示形状

    python利用PyQt5设计鼠标显示形状

    不知道大家有没有发现,我们在网页移动鼠标时,不同的网页会有不同的鼠标移动特效,通过移动鼠标,会形成类似蜘蛛网等等的特效,本文将用PyQt5实现这一特效,需要的可以参考一下
    2024-07-07
  • Python中使用Selenium环境安装的方法步骤

    Python中使用Selenium环境安装的方法步骤

    这篇文章主要介绍了Python中使用Selenium环境安装的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • python 弹窗提示警告框MessageBox的实例

    python 弹窗提示警告框MessageBox的实例

    今天小编就为大家分享一篇python 弹窗提示警告框MessageBox的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python学习教程之常用的内置函数大全

    Python学习教程之常用的内置函数大全

    python给我们提供了很多已经定义好的函数,下面这篇文章主要给大家介绍了关于Python学习教程之一些常用的内置函数,文中分享了关于数学函数、功能函数、类型转换函数、字符串处理和序列处理函数的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • Linux安装Pytorch1.8GPU(CUDA11.1)的实现

    Linux安装Pytorch1.8GPU(CUDA11.1)的实现

    这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python常见反爬虫机制解决方案

    Python常见反爬虫机制解决方案

    这篇文章主要介绍了Python常见反爬虫机制解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python Tkinter创建GUI应用程序的示例

    Python Tkinter创建GUI应用程序的示例

    Tkinter提供了丰富的功能和灵活的接口,让开发者能够轻松地构建出各种各样的图形用户界面,本文介绍了使用Python的Tkinter库创建图形用户界面GUI应用程序,感兴趣的可以了解一下
    2024-12-12
  • Python实现图像添加水印的方法

    Python实现图像添加水印的方法

    在日常图像处理中,为图片添加水印是一项常见任务,本文主要介绍了Python实现图像添加水印的方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07

最新评论