使用 Python 进行面部识别
人脸识别正在成为软件开发中的一种趋势。它有助于识别人脸并使应用程序更加健壮。在本教程中,我们将使用python
和face_recognition
库创建一个简单的人脸识别。
对于开发环境,我们将使用 Visual Studio Community Edition。
如果你的计算机上还没有安装它,你可以从这里下载:https://visualstudio.microsoft.com/downloads/。并使用 C++安装桌面开发。
现在我们有了使用 C++ 进行桌面开发的 Visual Studio,我们可以开始我们的项目了。
使用 Visual Studio 打开一个新目录并创建一个新的 python 环境。我们将使用venv
. 打开你的集成终端并编写python -m venv venv
。然后通过键入venv/bin/Activate.ps1
激活环境。这是针对 PowerShell 的。
如果你使用任何其他终端,你可以在此处找到完整列表:https://docs.python.org/3/library/venv.html
现在我们已经完成了虚拟环境的创建,让我们开始提取我们的依赖项。为此,我们将需要opencv
和face_recognition
。在你的终端内使用pip
.
pip install opencv-python face_recognition
Face Recognition是一个使用最先进的dlib库的库。我们准备好编写一些代码并识别一些面孔。
创建一个新的 python 文件,我们将调用文件missingPerson.py
,假设我们将使用我们的应用程序匹配失踪人员。导入我们的依赖项并编写我们的前几行。
import cv2
import numpy as np
import face_recognition
import osfrom face_recognition.api import face_distance
假设我们所有的照片都存储在我们的服务器存储中,我们需要首先将所有人物的图像拉入我们的应用程序并读取这些图像。
path = 'MissingPersons'
images = []
missingPersons = []
missingPersonsList = os.listdir(path)for missingPerson in missingPersonsList :curImg = cv2.imread(f'{path}/{missingPerson}')images.append(curImg)missingPersons.append(os.path.splitext(missingPerson)[0])
print(missingPersons)
在本节中,我们将使用 opencv 读取失踪人员的所有图像并将它们附加到我们的missingPerson
列表中。
在我们从存储中读取所有丢失的人脸图像后,我们需要找到人脸编码,以便我们可以使用 CNN 人脸检测器在图像中创建人脸边界框的二维数组。
def findEncodings(images):encodeList = []for img in images:img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)encode = face_recognition.face_encodings(img)[0]encodeList.append(encode)print(encodeList)return encodeListencodeListKnown = findEncodings(images)
print('Encoding Complete')
我们将二维数组存储到已知人脸编码列表中。这将需要几分钟。
现在我们有了所有失踪人员的面部编码,我们现在要做的就是将它们与我们的报告人图像进行匹配。face_recognition
使用起来非常方便。
def findMissingPerson(encodeListKnown, reportedPerson='found1.jpg'):person = face_recognition.load_image_file(f'ReportedPersons/{reportedPerson}]')person = cv2.cvtColor(person,cv2.COLOR_BGR2RGB)try:encodePerson = face_recognition.face_encodings(person)[0]comparedFace = face_recognition.compare_faces(encodeListKnown,encodePerson)faceDis = face_recognition.face_distance(encodeListKnown,encodePerson)matchIndex = np.argmin(faceDis)if comparedFace[matchIndex]:name = missingPersons[matchIndex].upper()print(name)return nameelse:print('Not Found')return Falseexcept IndexError as e:print(e)return e
首先我们需要加载被报告人的图像文件,对他们的脸进行编码。剩下的就是将被报告人脸编码与我们已知的人脸编码进行比较。然后一个简单的逻辑匹配他们的索引并返回是否在我们的 missingPersons 列表中找到该人。
这种人脸识别不仅用于寻找失踪人员。它可以检测和识别人脸,并且可以根据需要进行操作。
☆ END ☆
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。
↓扫描二维码添加小编↓
使用 Python 进行面部识别相关推荐
- Elasticsearch:如何使用 Elasticsearch 和 Python 构建面部识别系统
你是否曾经尝试在图像中搜索目标? Elasticsearch 可以帮助你存储,分析和搜索图像或视频中的目标. 在本快速教程中,我们将向你展示如何构建一个使用 Python 进行面部识别的系统. 了解有 ...
- 如何用 OpenCV、Python 和深度学习实现面部识别?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 Face ID 的兴起带动了一波面部识别技术热 ...
- python opencv 录制视频_如何使用OpenCV、Python和深度学习在图像和视频中实现面部识别?...
Face ID 的兴起带动了一波面部识别技术热潮.本文将介绍如何使用 OpenCV.Python 和深度学习在图像和视频中实现面部识别,以基于深度识别的面部嵌入,实时执行且达到高准确度. 以下内容由 ...
- 如何才能骗过面部识别系统?
(本内容转载自公众号"科技与Python") 面部识别技术将实时图像与目标对象以前的照片进行匹配,以此来确认身份.中国已经制造出了一种可以在几秒钟内扫描20亿个面孔的智能监控系统 ...
- Elasticsearch:使用向量搜索来搜索图片及文字
在 eCommerce 里的应用中,我们可以对图像来进行搜索从而达到更好的应用体验.如果你之前阅读过我的文章 "Elasticsearch:如何使用 Elasticsearch 和 Pyth ...
- python 面部识别_一文教你在Python中打造你自己专属的面部识别系统
原标题:一文教你在Python中打造你自己专属的面部识别系统 人脸识别是用户身份验证的最新趋势.苹果推出的新一代iPhone X使用面部识别技术来验证用户身份.百度也在使"刷脸"的 ...
- 使用Python,OpenCV,本地二进制模式(LBP)进行人脸识别
使用Python,OpenCV与本地二进制模式(LBP)进行人脸识别 1. 效果图 2. 原理及步骤 2.1 原理 2.2 步骤 3. 源码 参考 在深度学习和暹罗网络之前,面部识别算法依赖于特征提取 ...
- 使用Python,OpenCV,面部标志进行面部对齐
这一节延续面部识别的主题,关于面部识别.面部标志识别.眨眼检测.疲劳驾驶检测.视频流中的面部标志识别,可以看我之前的博客. 这篇博客将探索面部对齐:面部对齐可以使得人脸检测模型更加的准确: 使用Pyt ...
- Python多阶段框架实现虚拟试衣间,超逼真!
作者 | 李秋键 责编 | 晋兆雨 头图 | CSDN下载自视觉中国 任意姿态下的虚拟试衣因其巨大的应用潜力而引起了人们的广泛关注.然而,现有的方法在将新颖的服装和姿势贴合到一个人身上的同时,很难保留 ...
- 8月精选Python开源项目Top10
作者 | Mybridge 译者 | linstancy 编辑 | Jane 出品 | AI科技大本营 [导读]过去一个月里,我们对近 250 个 Python 开源项目进行了排名,并挑选出热度前 1 ...
最新文章
- InnoDB: Failing assertion: trx-isolation_level == TRX_ISO_READ_UNCOMMITTED
- mapredue输入路径
- 【每日随笔】电子签名 ( 下载 “e 签保“ 应用 | 使用 手机号 + 短信验证码 登录 | 发起签署 | 签名 | 获取签名后的 PDF 文件及出证信息 )
- 从员工的离职时间,就能看出离职原因
- mysql学习(2)索引的本质
- SpringBoot配置文件绑定到Java Bean
- 一种被国人漠视的精神---狼的精神
- D3 svg text标签控制
- 爆一个VS2015 Update1更新带来的编译BUG【已有解决方案】
- mac下的git的安装与简单的配置
- python怎么打印图片_Python打印图片
- 图片不能有透明通道AppStore images can't contain alpha channels or transparencies windows iOS
- 小米、红米手机如何打开开发者模式,如何测试安装App
- Web移动端混合开发--IonicFramework
- 截部分陈宏对用线段树解矩形并的轮廓(picture 问题的深入讨论)
- 野火FPGA-状态机
- java做橡皮擦效果_顶风作案,html5 canvas实现橡皮擦功能,擦了就知道有惊喜了...
- Python数据分析高薪实战第四天 构建国产电视剧评分数据集
- 南卫理公会大学计算机科学,南卫理公会大学计算机科学研究生语言及申请要求-费用-课程设置...
- LIUNX账户与安全
热门文章
- String的spilt()方法
- 双活数据中心解决方案
- Ubuntu下安装Remix OS双系统
- eggs和egg是什么意思_egg是什么意思_egg的翻译_音标_读音_用法_例句_爱词霸在线词典...
- 面向交付的IT软件管理流程
- 校园商铺项目 SSM迭代Spring Boot项目实战视频
- 高校大学生可以免费领半年阿里云服务器
- 3D打印技术如何影响未来
- 菱形是一种特殊的平行四边形,是四条边均相等的平行四边形。题目给出菱形的边长n,用*画出菱形。如n=1,输出:
- createTrackbar滑条函数