人脸对比

简介: 【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,小于该阈值,就认为两张图像属于一张人脸。

相关文章
|
10月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
10月前
|
缓存 NoSQL API
Django缓存机制详解:从配置到实战应用
本文介绍了 Django 缓存机制的基础知识与实战应用,涵盖缓存概念、Redis 安装配置、缓存策略及 API 使用,并通过 RBAC 权限系统演示缓存的读写与删除操作,助力提升 Web 应用性能。
257 0
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
814 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
Linux Shell 开发工具
Git 快速入门:全面了解与安装步骤
Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年创建,最初是为了更好地管理 Linux 内核开发而设计。
1028 1
Git 快速入门:全面了解与安装步骤
|
JavaScript 前端开发 Java
vue2知识点:vue-cli脚手架配置代理服务器
vue2知识点:vue-cli脚手架配置代理服务器
396 7
|
存储 算法 程序员
C语言:库函数
C语言的库函数是预定义的函数,用于执行常见的编程任务,如输入输出、字符串处理、数学运算等。使用库函数可以简化编程工作,提高开发效率。C标准库提供了丰富的函数,满足各种需求。
图片的大小
【10月更文挑战第7天】
905 1
|
Ubuntu Shell Linux
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门
采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)、采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)、在脚本的路径前加上“.”或者 source(了解)原因: 前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则 子 shell 关闭,回到父 shell 中。第三种,也就是使用在脚本路径前加“.”或者 source 的方式,`可以使脚本内容在当前 shell 里执行,而无需打开子 shell!`这也是为什么我们每次要修改完
2682 1
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门
GOLANG MAP 查找
GOLANG MAP 查找
314 3
|
小程序 Java
28. 【Java教程】Scanner 类
28. 【Java教程】Scanner 类
474 7