千家信息网

基于face_recognition如何实现人脸识别

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关基于face_recognition如何实现人脸识别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。准备工作我们的人脸识别基
千家信息网最后更新 2026年11月03日基于face_recognition如何实现人脸识别

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

准备工作

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

pip install face_recognition

人脸数字化

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

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

图片数据

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

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

代码实现

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

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

人脸 向量 图片 数据 元素 照片 面的 名字 数组 标签 工作 代码 位置 内容 区域 文章 更多 王妃 王子 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津市摩尔互联网科技 重庆互联网络科技 高科技与互联网 互联网科技集团 紫鲸互联网科技 互联网金融科技平台 哈尔滨新华互联网科技学院 中国航天科技大学国际工业互联网 米聚互联网科技南京有限公司排面 浙南科技城互联网大厦建设工程 深圳艾果互联网通讯科技 互联网金融科技名词解释 富国互联网金融科技混合基金 陕西云淼互联网科技公司 江苏互联网科技小贷 云鲸互联网络科技有限公司 中国新注册互联网科技 互联网公司属于科技吗 北京互联网科技类企业分布 互联网科技大会大佬 哈尔滨大商圈互联网科技有限公司 疫情对互联网科技公司影响 互联网巨头反垄断金融科技 中国 科技 互联网 剑昆互联网络科技有限公司临桂 移动互联网科技股 科技互联网的核心竞争力 互联网第三次科技革命特征 互联网科技新闻 第三届互联网大会安防黑科技
0