当前位置: 首页 > news >正文

如何使用python AI快速比对两张人脸图像?

本篇文章的代码块的实现主要是为了能够快速的通过python第三方非标准库对比出两张人脸是否一样。

实现过程比较简单,但是第三方python依赖的安装过程较为曲折,下面是通过实践对比总结出来的能够支持的几个版本,避免大家踩坑。

python版本:3.6.8
dlib版本:19.7.0
face-recognition版本:0.1.10

开始之前,我们选择使用pip的方式对第三方的非标准库进行安装。

pip install cmakepip install dlib==19.7.0pip install face-recognition==0.1.10pip install opencv-python

然后,将使用到的模块cv2/face-recognition两个模块导入到代码块中即可。

# OpenCV is a library of programming functions mainly aimed at real-time computer vision.
import cv2# It's loading a pre-trained model that can detect faces in images.
import face_recognition

新建一个python函数get_face_encodings,用来获取人脸部分的编码,后面可以根据这个编码来进行人脸比对。

def get_face_encodings(image_path):"""It takes an image path, loads the image, finds the faces in the image, and returns the 128-d face encodings for eachface:param image_path: The path to the image to be processed"""# It's loading a pre-trained model that can detect faces in images.image = cv2.imread(image_path)# It's converting the image from BGR to RGB.image_RGB = image[:, :, ::-1]image_face = face_recognition.face_locations(image_RGB)# It's taking the image and the face locations and returning the face encodings.face_env = face_recognition.face_encodings(image_RGB, image_face)# It's returning the first face encoding in the list.return face_env[0]

上述函数中注释都是通过Pycharm插件自动生成的,接下来我们直接调用get_face_encodings函数分别获取两个人脸的编码。

# It's taking the image and the face locations and returning the face encodings.
ima1 = get_face_encodings('03.jpg')# It's taking the image and the face locations and returning the face encodings.
ima2 = get_face_encodings('05.jpg')

上面我们选择了两张附有人脸的图片,并且已经获取到了对应的人脸编码。接着使用compare_faces函数进行人脸比对。

# It's comparing the two face encodings and returning True if they match.
is_same = face_recognition.compare_faces([ima1], ima2, tolerance=0.3)[0]print('人脸比对结果:{}'.format(is_same))

人脸比对结果:False

这个时候人脸比对结果已经出来了,False代表不一样。这里compare_faces有一个比较重要的参数就是tolerance=0.3,默认情况下是0.6。

tolerance参数的值越小的时候代表比对要求更加严格,因此这个参数的大小需要根据实际情况设置,它会直接影响整个比对过程的结果。

往期精彩

python自制PDF转换.PNG格式图片(按每页生成图片完整源码)小工具!

python如何使用最简单的方式将PDF转换成Word?

python项目环境迁移时如何生成第三方库文件requirements.txt并安装?

相关文章:

如何使用python AI快速比对两张人脸图像?

本篇文章的代码块的实现主要是为了能够快速的通过python第三方非标准库对比出两张人脸是否一样。 实现过程比较简单,但是第三方python依赖的安装过程较为曲折,下面是通过实践对比总结出来的能够支持的几个版本,避免大家踩坑。 python版本&a…...

(2)C#传智:变量基础(第二天)

一、注释符 不写注释是流氓,名字瞎起是扯蛋。 注释作用:解释与注销 命名: 以字母、_、开头,里面只能有_与特殊符,其它不得出现如%*&^等。 不能与关键字重复。区分大小写,Num…...

02-mysql高级-

文章目录mysql高级1,约束1.1 概念1.2 分类1.3 非空约束1.4 唯一约束1.5 主键约束1.6 默认约束1.7 约束练习1.8 外键约束1.8.1 概述1.8.2 语法1.8.3 练习2,数据库设计2.1 数据库设计简介2.2 表关系(一对多)mysql高级 今日目标 掌握约束的使用 掌握表关系…...

windows 使用everything 查看文件(夹)存储空间占用

起因 总是那个原因,C: D: E:全都红了,下的游戏太多了,然后就这样了,之前也有过不少这种情况.几年前,就在智能手机上见过类似的功能. 大概就是遍历文件系统,统计每个文件的大小,然后父节点记录所有子节点的和,然后可以显示占用百分比之类的. 经过 在windows 上我最开始使用ex…...

2023该好好赚钱了,推荐三个下班就能做的副业

在过去的两年里,越来越多的同事选择辞职创业。许多人通过互联网红利赚到了他们的第一桶金。随着短视频的兴起,越来越多的人吹嘘自己年收入百万,导致很多刚进入职场的年轻人逐渐迷失自我,认为钱特别容易赚。但事实上,80…...

vue3如何进行数据监听watch/watchEffect

我们都知道监听器的作用是在每次响应式状态发生变化时触发,在组合式 API 中,我们可以使用 watch()函数和watchEffect()函数, 当你更改了响应式状态,它可能会同时触发 Vue 组件更新和侦听器回调。 默认情况下,用户创建的侦听器回…...

Wgcloud安装和使用(性能监控)

一、Wgcloud说明 官网:https://www.wgstart.com/ WGCLOUD支持主机各种指标监测(cpu使用率,cpu温度,内存使用率,磁盘容量,磁盘IO,硬盘SMART健康状态,系统负载,连接数量&…...

前端如何实现本地图片上传?

前端如何实现本地图片上传? 摘要 对于学习前端的小伙伴都有一个困惑,就是平常想上手小项目,但碍于不想购买服务器,实践受到了限制。 一般我选择node.js搭建服务器,毕竟基于JavaScript语言,简直不是一家人…...

【基础算法】差分的应用(一维差分和二维差分)

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...

第49章 API统一集中管理

1 关于统一集中管理API的一些思考 1、统一集中管理是保证工程性项目得保质、保量、成功实施,并对后期维护提供数据支撑的最有效,最节省资源和时间的技能和做法,软件做为一种特殊的工程性项目,也符合上述特性。 2、由于在前台实现中…...

carla0.9.13-UE4添加4轮车模型(Linux系统)

前期准备建模工具:blender:v3.4.1;可以在Ubuntu Software商店直接下载虚拟引擎:carla-UE4 (carla v0.9.13),无需额外安装UE4,carla中自带插件编译carla参照官方文档:https://carla.readthedocs.io/en/0.9.1…...

对比yolov4和yolov3

目录 1. 网络结构的不同 1.1 Backbone 1.1.1 Darknet53 1.1.2 CSPDarknet53 1.2 Neck 1.2.1 FPN 1.2.2 PAN 1.2.3 SPP 1.3 Head 2. ​​​​​数据增强​​​​​ 2.1 CutMix 2.2 Mosaic 3. 激活函数 4. 损失函数 5. 正则化方法 知识点 记录备忘。 总体而言&…...

Android ServiceManager

1.ServiceManager ServiceManager在init进程启动后启动,用来管理系统中的Service。 一般开机过程分为三个阶段: ①OS级别,由bootloader载入linux内核后,内核开始初始化,并载入built-in的驱动程序,内核完成开机后,载入init process,切换至user-space后,结束内核的循…...

数据挖掘,计算机网络、操作系统刷题笔记53

数据挖掘,计算机网络、操作系统刷题笔记53 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,orac…...

地球板块运动vr交互模拟体验教学提高学生的学习兴趣

海陆变迁是地球演化史上非常重要的一个过程,它不仅影响着地球的气候、地貌、生物多样性等方面,还对人类文明的演化产生了深远的影响。为了帮助学生更加深入地了解海陆变迁的过程和机制,很多高校教育机构开始采用虚拟现实技术进行教学探究。 V…...

【Android玩机】跟大家聊聊面具Magisk的使用(安装、隐藏)

目录:1、Magisk中文网2、隐藏面具和Root(一共3种方法)1、Magisk中文网 (1)首先Magisk有一个中文网,对新手非常友好 (2)这网站里面主要包含:6 部分 (3)按照他给…...

DACS: Domain Adaptation via Cross-domain Mixed Sampling 学习笔记

DACS介绍方法Naive MixingDACSClassMix![在这里插入图片描述](https://img-blog.csdnimg.cn/ca4f83a2711e49f3b754ca90d774cd50.png)算法流程实验结果反思介绍 近年来,基于卷积神经网络的语义分割模型在众多应用中表现出了显著的性能。然而当应用于新的领域时&…...

python并发编程(并发与并行,同步和异步,阻塞与非阻塞)

最近在学python的网络编程,学了socket通信,并利用socket实现了一个具有用户验证功能,可以上传下载文件、可以实现命令行功能,创建和删除文件夹,可以实现的断点续传等功能的FTP服务器。但在这当中,发现一些概…...

【项目】DTO、VO以及PO之间的关系和区别

【项目】DTO、VO以及PO之间的关系和区别 文章目录【项目】DTO、VO以及PO之间的关系和区别1.概念2. 作用1.概念 DTO:DTO是 Data Transfer Object 的缩写,也叫数据传输对象。 PO:PO是 Persistent Object 的缩写,也叫持久化对象。 …...

Nginx介绍

什么是Nginx? Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接&#x…...

OllyDbg与CheatEngine动态分析实战:恶意软件行为建模指南

1. 这不是游戏外挂工具,而是逆向工程师的听诊器与显微镜很多人第一次听说OllyDbg和Cheat Engine,是在游戏论坛里看到“修改血量”“无限金币”的教程;也有人在安全群聊中听到老手随口一提:“这壳用OD下断点跑两圈就脱了”。但如果…...

C语言基础 内存管理

第十章 内存管理./a.out运行起来后,系统会给a.out分配一段内存区域1 code 存放编写好的c语言代码。只读特性,在运行期间不能修改。2 data 数据段。存储全局变量,以及被static修改的变量。细分:data 数据段,有初值的…...

TT100K数据集类别不平衡?手把手教你用Python筛选并重划分(保留45类实战)

TT100K数据集类别不平衡解决方案:Python实战指南当你第一次打开TT100K数据集时,可能会被其庞大的图片数量震撼——train文件夹6105张,test文件夹3071张,other文件夹更是多达7641张。但兴奋过后,细看类别分布&#xff0…...

ros2_control 代码架构分析

ros2_control 代码架构分析 一、整体框架 1.1 代码框架 ├── ros2_control/ # ★ 框架本体(vendored,jazzy 分支) │ ├── controller_manager/ # 核心运行时:ros2_control_node │ ├── hardware_interface/ # 硬件抽象 +…...

麒麟服务器等保三级配置实战:从SSH双因子到kysec策略落地

1. 这不是“打补丁”,而是给服务器穿防弹衣:麒麟等保配置的真实定位很多人第一次接触“国产麒麟服务器等保配置”,第一反应是:“不就是改几个密码、关几个端口、装个杀毒软件?”——这种理解,轻则导致测评反…...

深度解析美国RTP全系列导热工程塑料,革新电子散热新选择

在工程塑料行业高速发展的今天,电子设备散热需求日益成为制约产品性能与可靠性的关键瓶颈。传统散热材料面临导热效率低、机械性能弱、加工适应性差等多重挑战,行业亟待寻找既能满足严苛散热要求,又具备优异综合性能的新一代解决方案。美国RT…...

前端可访问性:表单验证的无障碍实现指南

前端可访问性:表单验证的无障碍实现指南 前言 各位前端小伙伴,今天咱们来聊聊表单验证的无障碍问题。想象一下: 用户填写表单时出错了视力正常的用户看到红色错误提示但屏幕阅读器用户可能完全不知道发生了什么键盘用户也可能错过错误信息 这…...

上位机知识篇---安装包文件名各部分的含义

torch-2.5.0a0872d972e41.nv24.08.17622132-cp310-cp310-linux_aarch64.whl这个长长的文件名是一个为特定平台预编译的 PyTorch 安装包(.whl 文件) 的名字。它遵循 Python 的 PEP 427 命名规范,每一部分都精确描述了该软件包的兼容性信息。我…...

医疗AI模型窃取攻击:原理、风险与超声影像场景的防御实践

1. 项目概述:当医疗AI的“大脑”面临被“复制”的风险在医疗影像领域,尤其是超声诊断,深度学习模型正以前所未有的速度改变着临床实践。它能从看似杂乱的超声回波信号中,精准地量化肝脏脂肪含量、鉴别乳腺肿物的良恶性&#xff0c…...

化学教学平台——数据可视化与电化学AI动画推演

化学教学平台——数据可视化与电化学AI动画推演 1 项目概述 本化学教学平台是一套完整的前端Web应用,旨在为化学教育工作者和学生提供两个核心功能模块:数据智能查询与化学性质可视化(基于ECharts和D3.js),以及反应模拟预判——基于电化学原理的AI动画推演(基于Three.j…...