人脸对比

简介: 【7月更文挑战第31天】人脸对比

在face_predict下新建face-compare.py,完成人脸对比。

人脸比较:将两张人脸图像进行对比

将两者之间的相似值进行打印

阈值为0.6,阈值越小,条件越苛刻

import cv2
import face_recognition

加载被比较的图像

source_image = face_recognition.load_image_file("Face_database/hyz/hyz.png")

加载测试图像

compare_image = face_recognition.load_image_file("Facedatabase/hyz/hyz
near.png")

获取人脸位置并做单人脸容错处理

source_locations = face_recognition.face_locations(source_image)
if len(source_locations) != 1:
print("注意:图像一只能有一张人脸哦!")
exit(0)

获取人脸位置并做单人脸容错处理

compare_locations = face_recognition.face_locations(compare_image)
if len(compare_locations) != 1:
print("注意:图像二只能有一张人脸哦!")
exit(0)

绘制图像一的人脸

for (top, right, bottom, left) in source_locations:
print(top, right, bottom, left)
cv2.rectangle(source_image, (left, top), (right, bottom), (0, 255, 0), 2)

绘制图像二的人脸

for (top, right, bottom, left) in compare_locations:
print(top, right, bottom, left)
cv2.rectangle(compare_image, (left, top), (right, bottom), (0, 255, 0), 2)

获取图像一的面部编码

source_face_encoding = face_recognition.face_encodings(source_image)[0]
source_encodings = [
source_face_encoding,
]

获取图像二的面部编码

compare_face_encoding = face_recognition.face_encodings(compare_image)[0]

显示两张得到人脸后的图像

source_image = source_image[:, :, ::-1]
cv2.imshow("image", source_image)
cv2.waitKey(0)
compare_image = compare_image[:, :, ::-1]
cv2.imshow("image", compare_image)
cv2.waitKey(0)

查看面部一与面部二的比较结果,阈值为0.6,阈值越小越苛刻

face_distances = face_recognition.compare_faces(source_encodings, compareface
encoding, 0.6)

输出结果

print("正常阈值为0.6时,测试图像是否与已知图像{}匹配!".format("是" if face_distances else "不是"))
将两张照片图像加载进来后,先判断照片中是否只有一张人脸。如果照片中多于一张人脸,提示并退出;如果两张照片中都只有一张人脸,那么就将人脸圈出来,圈出来的人脸进行编码后进行比对,阈值为0.6,小于该阈值,就认为两张图像属于一张人脸。

相关文章
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
3月前
|
人工智能 安全 机器人
Grok 4.1 前景分析:马斯克的 AI 奇兵,能从 ChatGPT 嘴里抢食吗?
2025年11月,xAI发布Grok 4.1——马斯克称其为“真正的AI朋友”。LMArena盲测断层登顶(1483 Elo),幻觉率降至4.22%,情感理解(EQ-Bench 1586)、256K长上下文、双模式架构(Thinking/Fast)均领跑业界。全平台免费,直击OpenAI付费墙。(239字)
|
12月前
|
缓存 NoSQL API
Django缓存机制详解:从配置到实战应用
本文介绍了 Django 缓存机制的基础知识与实战应用,涵盖缓存概念、Redis 安装配置、缓存策略及 API 使用,并通过 RBAC 权限系统演示缓存的读写与删除操作,助力提升 Web 应用性能。
328 0
|
Go
【LeetCode 热题100】字符串 DP 三连:最长回文子串、最长公共子序列 & 编辑距离(力扣5 / 1143/ )(Go语言版)
本文详细解析了字符串动态规划(DP)领域的三个经典问题:**最长回文子串**(LeetCode 5)、**最长公共子序列**(LeetCode 1143)和**编辑距离**(LeetCode 72)。通过定义状态、推导状态转移方程,结合 Go 语言实现代码,深入浅出地讲解了解题思路。从判断子串是否为回文到求解两个字符串的匹配长度,再到计算字符串转换的最小操作数,每道题都展示了 DP 的核心思想与应用场景。最后通过表格总结对比三题的异同,帮助读者更好地掌握字符串 DP 的解题技巧。
362 45
|
缓存 iOS开发 MacOS
uniapp发布快应用失败报错Error: ENOENT: no such file or directory以及hap-chimera-toolkit问题优雅草卓伊凡
uniapp发布快应用失败报错Error: ENOENT: no such file or directory以及hap-chimera-toolkit问题优雅草卓伊凡
1134 2
uniapp发布快应用失败报错Error: ENOENT: no such file or directory以及hap-chimera-toolkit问题优雅草卓伊凡
|
9月前
|
存储 弹性计算 文件存储
阿里云渠道商:云文件存储 NAS 怎么使用?
阿里云文件存储NAS提供全托管、弹性扩展的共享存储服务,支持多协议无缝挂载,适用于Web集群、容器持久化与大数据场景。具备高可用、高并发、低成本等优势,助力企业高效上云。
|
存储 算法 程序员
C语言:库函数
C语言的库函数是预定义的函数,用于执行常见的编程任务,如输入输出、字符串处理、数学运算等。使用库函数可以简化编程工作,提高开发效率。C标准库提供了丰富的函数,满足各种需求。
GOLANG MAP 查找
GOLANG MAP 查找
349 3
|
Rust 安全 程序员
Rust 语言的防错机制太惊人了!安全编码从此不再是难题,快来一探究竟!
【8月更文挑战第31天】《安全编码原则:Rust 语言中的防错机制》探讨了代码安全的重要性,并详细介绍了Rust语言如何通过内存安全模型、所有权与借用规则等特性,在编译阶段检测并阻止潜在错误,如缓冲区溢出和悬空指针。文章还讨论了类型安全、边界检查等其他安全特性,并提出了遵循不可变引用、避免裸指针及充分测试等实用编码原则,以进一步提升代码质量和安全性。随着Rust在软件开发中的应用日益广泛,掌握其安全编码原则变得尤为重要。
440 0
|
Shell
5.Electron之shell(使用系统默认浏览器打开网页)
5.Electron之shell(使用系统默认浏览器打开网页)
756 1