我的编程空间,编程开发者的网络收藏夹
学习永远不晚

基于face_recognition如何实现人脸识别

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

基于face_recognition如何实现人脸识别

这篇文章将为大家详细讲解有关基于face_recognition如何实现人脸识别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

准备工作

我们的人脸识别基于face_recognition库。face_recognition基于dlib实现,用深度学习训练数据,模型准确率高达99.38%。在开始我们的工作前,我们先安装face_recognition

pip install face_recognition

人脸数字化

人脸识别的***步是检测照片中的人脸区域,然后将人脸的图像数据转换成一个长度为128的向量,这128个数据代表了人脸的128个特征指标,如下所示

基于face_recognition如何实现人脸识别

对于每一张已知人脸,生成这样的一个128位的向量。对于一张未知人脸,将它的128位向量和所有已知人脸的128位向量一一比对,找到相似度***的那一个,即找出了未知人脸对应的人。

图片数据

我们准备了两张照片,分别是凯特王妃和威廉王子的单人照,分别存成catherine.jpg和william.jpg,这两张照片中的人脸作为我们的已知人脸

基于face_recognition如何实现人脸识别

我们的目标是在下面的合影中识别出两人的脸并在图中标出各自的名字。下图存成unknown.jpg

基于face_recognition如何实现人脸识别

代码实现

接下来开始我们的编程工作

import cv2  import face_recognitionnames = [          "catherine",      "william",  ]

首先我们定义了标签集,存在names数组中。

标签名字也是我们图片的文件名。

images = []  for name in names:      filename = name + ".jpg"      image = face_recognition.load_image_file(filename)       images.append(image)  unknown_image = face_recognition.load_image_file("unknown.jpg")

调用face_recognition.load_image_file从图片中读取数据。

这里读取了包含已知人脸和未知人脸的图片的数据,未知人脸的图片就是上面的合影图片unknown.jpg。

face_encodings = []  for image in images:      encoding = face_recognition.face_encodings(image)[0]       face_encodings.append(encoding)  unknown_face_encodings = face_recognition.face_encodings(unknown_image)

face_recognition.face_encodings会返回图片中的所有的人脸的128位向量。单人照片只有一张人脸,所以face_recognition.face_encodings(image)[0]只取***个元素。合影图片中包含了2张人脸,所以unknown_face_encodings包含2个128位向量。

face_locations = face_recognition.face_locations(unknown_image)  for i in range(len(unknown_face_encodings)):          unknown_encoding = unknown_face_encodings[i]           face_location = face_locations[i]           top, right, bottom, left = face_location           cv2.rectangle(unknown_image, (left, top), (right, bottom), (0, 255, 0), 2)           results = face_recognition.compare_faces(face_encodings, unknown_encoding)           for j in range(len(results)):                   if results[j]:                           name = names[j]                           cv2.putText(unknown_image, name, (left-10, top-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)    unknown_image_rgb = cv2.cvtColor(unknown_image, cv2.COLOR_BGR2RGB)  cv2.imshow("Output", unknown_image_rgb)  cv2.waitKey(0)

face_locations存了每张脸的位置信息。

在循环中我们调用cv2.rectangle框出了检测到的每张脸。

face_recognition.compare_faces将已知人脸的128位向量和每张未知人脸的128位向量做比较,结果存入results数组中。results数组中的每一个元素都是True或者False,长度和人脸个数相等。results中的每个元素都和已知人脸一一对应,在某一个位置处的元素为True,表示未知人脸被识别成这张已知人脸。

对识别出来的每张人脸,我们调用cv2.putText在图上标注标签。

以上是代码的全部。

测试

令人兴奋的时刻又来到了! 我们来检验一下我们的成果。

运行上面的程序,可以看到下面的结果

基于face_recognition如何实现人脸识别

威廉王子和凯特王妃的人脸都被准确地识别出来。绿色的框框出了人脸区域,框的上方标注了识别到的人的名字。

关于基于face_recognition如何实现人脸识别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

基于face_recognition如何实现人脸识别

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基于face_recognition如何实现人脸识别

这篇文章将为大家详细讲解有关基于face_recognition如何实现人脸识别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。准备工作我们的人脸识别基于face_recognition库。f
2023-06-17

Android基于ArcSoft如何实现人脸识别

小编给大家分享一下Android基于ArcSoft如何实现人脸识别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、在虹软的开发者中心创建一个自己的应用,将APP
2023-06-22

Python中基于Opencv怎么实现人脸识别

这篇文章主要讲解了“Python中基于Opencv怎么实现人脸识别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中基于Opencv怎么实现人脸识别”吧!检测人脸。这应该是最基本的
2023-06-02

基于Python的人脸识别功能怎么实现

这篇文章主要介绍“基于Python的人脸识别功能怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于Python的人脸识别功能怎么实现”文章能帮助大家解决问题。一、 人脸检测人脸检测是指从图像
2023-07-05

基于opencv和pillow怎么实现人脸识别系统

这篇文章主要讲解了“基于opencv和pillow怎么实现人脸识别系统”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于opencv和pillow怎么实现人脸识别系统”吧!本文不涉及分类器、
2023-06-21

OpenCV实现人脸识别

主要有以下步骤: 1、人脸检测 2、人脸预处理 3、从收集的人脸训练机器学习算法 4、人脸识别 5、收尾工作 人脸检测算法: 基于Haar的脸部检测器的基本思想是,对于面部正面大部分区域而言,会有眼睛所在区域应该比前额和脸颊更暗,嘴巴应该比
2022-06-04

基于OpenCV和Gradio怎么实现简单的人脸识别

今天小编给大家分享一下基于OpenCV和Gradio怎么实现简单的人脸识别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。环境
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录