人脸识别系统——Face recognition 人脸识别

第1关:人脸检测

'''****************BEGIN****************'''
import face_recognition
image_path = './step1/image/children.jpg'
image = face_recognition.load_image_file(image_path)
face_locations = face_recognition.face_locations(image)
print(face_locations)
'''**************** END ****************'''import cv2
for face_location in face_locations:'''****************BEGIN****************'''top, right, bottom, left = face_locationcv2.rectangle(image, (left, top), (right, bottom), (0, 255, 0), 2)'''**************** END ****************'''# 保存图片
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
cv2.imwrite("./step1/out/children.jpg", image_rgb)

第2关:人脸特征点获取

import face_recognition
'''****************BEGIN****************'''
# 获取人脸特征点image = face_recognition.load_image_file("./step2/image/laugh.jpg")face_landmarks_list = face_recognition.face_landmarks(image)
print(face_landmarks_list)
'''**************** END ****************'''import cv2# 绘制人脸特征点
for face_landmarks in face_landmarks_list:'''****************BEGIN****************'''for facial_feature in face_landmarks.keys():for pt_pos in face_landmarks[facial_feature]:cv2.circle(image, pt_pos, 1, (255, 0, 0), 2)'''**************** END ****************'''# 保存图片
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
cv2.imwrite("./step2/out/laugh.jpg", image_rgb)

第3关:人脸识别

import face_recognitiondef recognition():'''****************BEGIN****************'''# 导入图片known_image_path = "./step3/known_image/cyx1.jpg"known_image_cyz = face_recognition.load_image_file(known_image_path)unknown_image_1_path = "./step3/unknown_image/cyx2.jpg"unknown_image_2_path = "./step3/unknown_image/wlh.jpg"unknown_image_1 = face_recognition.load_image_file(unknown_image_1_path)unknown_image_2 = face_recognition.load_image_file(unknown_image_2_path)'''**************** END ****************''''''****************BEGIN****************'''# 编码获取128维特征向量cyz_encoding = face_recognition.face_encodings(known_image_cyz)[0]unknown_encoding_1 = face_recognition.face_encodings(unknown_image_1)[0]unknown_encoding_2 = face_recognition.face_encodings(unknown_image_2)[0]'''**************** END ****************''''''****************BEGIN****************'''# 比较特征向量值,识别人脸face1_result = face_recognition.compare_faces([cyz_encoding], unknown_encoding_1, tolerance=0.5)face2_result = face_recognition.compare_faces([cyz_encoding], unknown_encoding_2, tolerance=0.5)'''**************** END ****************'''return face1_result, face2_result

第4关:人脸识别绘制并展示

import face_recognition
import cv2'''****************BEGIN****************'''
# 加载已知图片
known_image_c_path = "./step4/known_image/Caocao.jpg"
known_image_xy_path = "./step4/known_image/XunYu.jpg"
known_image_smy_path = "./step4/known_image/SiMayi.jpg"
known_image_zch_path = "./step4/known_image/ZhangChunhua.jpg"known_image_cc = face_recognition.load_image_file(known_image_c_path)
known_image_xy = face_recognition.load_image_file(known_image_xy_path)
known_image_smy = face_recognition.load_image_file(known_image_smy_path )
known_image_zch = face_recognition.load_image_file( known_image_zch_path)'''**************** END ****************''''''****************BEGIN****************'''
# 对图片进行编码,获取128维特征向量caocao_encoding = face_recognition.face_encodings(known_image_cc)[0]
xy_encoding = face_recognition.face_encodings(known_image_xy)[0]
zys_encoding = face_recognition.face_encodings(known_image_smy)[0]
cyz_encoding = face_recognition.face_encodings(known_image_zch)[0]'''**************** END ****************''''''****************BEGIN****************'''
# 存为数组以便之后识别
known_faces = [caocao_encoding,xy_encoding,zys_encoding,cyz_encoding
]
'''**************** END ****************''''''****************BEGIN****************'''
# 加载待识别图片
unknown_image_1_path = "./step4/unknown_image/Caocao.jpg"
unknown_image_2_path = "./step4/unknown_image/Cuple.jpg"
unknown_image_3_path = "./step4/unknown_image/ZhangChunhua.jpg"
unknown_image_4_path = "./step4/unknown_image/XunYu.jpg"
unknown_image_5_path = './step4/unknown_image/A.jpg'unknown_image_1 = face_recognition.load_image_file(unknown_image_1_path)
unknown_image_2 = face_recognition.load_image_file(unknown_image_2_path)
unknown_image_3 = face_recognition.load_image_file(unknown_image_3_path)
unknown_image_4 = face_recognition.load_image_file(unknown_image_4_path)
unknown_image_5 = face_recognition.load_image_file(unknown_image_5_path)'''**************** END ****************''''''****************BEGIN****************'''
# 存为数组以遍历识别
unknown_faces = [unknown_image_1, unknown_image_2, unknown_image_3,unknown_image_4,unknown_image_5
]
'''**************** END ****************'''# 初始化一些变量
face_locations = []
face_encodings = []
face_names = []
frame_number = 0for frame in unknown_faces:face_names = []'''****************BEGIN****************'''face_locations = face_recognition.face_locations(frame)# 对图片进行编码,获取128维特征向量face_encodings = face_recognition.face_encodings(frame, face_locations)'''**************** END ****************'''for face_encoding in face_encodings:'''****************BEGIN****************'''# 识别图片中人脸是否匹配已知图片match = face_recognition.compare_faces(known_faces, face_encoding, tolerance=0.5)'''**************** END ****************''''''****************BEGIN****************'''name = Noneif match[0]:name = "Caocao"elif match[1]:name = "XunYu"elif match[2]:name = "SiMayi"elif match[3]:name = 'ZhangChunhua'else:name = 'Unknown''''**************** END ****************'''face_names.append(name)# 结果打上标签for (top, right, bottom, left), name in zip(face_locations, face_names):if not name:continue'''****************BEGIN****************'''# 绘制脸部区域框# 绘制脸部区域框cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)# 在脸部区域下面绘制人名cv2.rectangle(frame, (left, bottom - 25),(right, bottom), (0, 0, 255), cv2.FILLED)font = cv2.FONT_HERSHEY_DUPLEXcv2.putText(frame, name, (left + 6, bottom - 6),font, 0.5, (255, 255, 255), 1)'''**************** END ****************'''print(frame[left+6, bottom-6])print(frame[left, bottom])print(face_locations)print(face_names)# 保存图片image_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)path = './step4/out/' + name + str(face_locations[0][0]) + '.jpg'cv2.imwrite(path, image_rgb)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/154395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HCIP-二、MSTP+Eth-trunk

二、MSTPEth-trunk 实验拓扑实验需求及解法 实验拓扑 实验需求及解法 //1.如图所示,配置设备名称和 IP 地址。 //2.在 SW1 与 SW2 之间配置链路聚合协议 LACP,完成以下需求: //2.1 SW1 作为主动端,设置系统优先级为最高。 [SW1]l…

报错!Jupyter notebook 500 : Internal Server Error

Jupyter notebook 报错 500 : Internal Server Error 问题背景 tensorflow-gpu环境,为跑特定代码专门开了一个环境,使用conda安装了Jupyter notebook,能够在浏览器打开Jupyter notebook,但是notebook打开ipynb会报错。 问题分析…

Android——Gradle插件项目根目录settings.gradle和build.gradle

一、settings.gradle结构分析 项目根目录下的settings.gradle配置文件示例: pluginManagement {/*** The pluginManagement.repositories block configures the* repositories Gradle uses to search or download the Gradle plugins and* their transitive depen…

【excel技巧】单元格内的公式如何隐藏?

Excel文件中最重要的除了数据还有就是一些公式了,但是只要点击单元格,公式就能显示出来,如果不想别人看到公式应该如何设置呢?今天分享隐藏excel单元格数据的方法。 选中单元格,点击右键打开【设置单元格格式】&#x…

电脑显示找不到mfc140.dll怎么办?哪个修复方法值得推荐

在电脑使用过程中,我们经常会遇到一些错误提示,例如"mfc140.dll文件缺失"这个问题可能会导致某些应用程序无法正常运行,可能给您带来困扰。本篇文章为您提供了六种有效解决此类问题的策略,使您能够迅速修复并恢复应用程…

查看docker容器IP地址

方法一: 进容器里面ip add 方法二: docker network inspect bridge [rootmabos grafana]# docker network inspect bridge [{"Name": "bridge","Id": "1e9bbb6dbcc13bab41c4a6f52f032275a0e84f58809c27d7dab99…

一篇文章带你了解Python常用自动化测试框架 —— Pytest

在之前的文章里我们已经学习了Python自带测试框架UnitTest,但是UnitTest具有一定的局限性 这篇文章里我们来学习第三方框架Pytest,它在保留了UnitTest框架语法的基础上有着更多的优化处理 下面我们将从以下角度来介绍Pytest: Pytest基本介绍…

mac系统安装docker desktop

Docker的基本概念 Docker 包括三个基本概念: 镜像(Image):相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。比如说nginx,mysql,redis等软件可以做成一个镜像。容器&#…

什么是高防CDN?有什么优势?

德迅高防CDN技术概述 随着互联网的快速发展,网络安全问题越来越受到人们的关注。高防CDN(Content Delivery Network)作为一种有效的网络安全防御手段,在企业和个人网站中得到了广泛应用。本文将详细介绍高防CDN的技术原理、防御原理、优点和应用场景&am…

如何验证命令执行漏洞(无回显)

如何验证命令执行漏洞(无回显) 使用yakit,选择dnslog模块 点击生成一个可用域名 以dvwa为例 命令执行ping一下刚才的域名 随后yakit中会出现回显信息,以此证明拥有命令执行漏洞 信息,以此证明拥有命令执行漏洞

【Java】乡镇卫生院、社区卫生服务中心云HIS源码

云HIS采用云端SaaS服务的方式提供,用户通过浏览器即能访问,无需关注系统的部署、维护、升级等问题,系统充分考虑了模板化、配置化、智能化、扩展化等设计方法,覆盖了基层医院机构的主要工作流程,能够与监管系统有序对接…

Java查询数据放入word模板中并在前端导出下载

需求:查询数据放入word模板中并在前端导出下载 解决方法:在模板的位置定义参数如 {{name}} {{age}}等等,使用 poi 处理 伪代码: PostMapping("/practiceAppr")public AjaxResult practiceAppr(OutputStream outputSt…

TensorFlow实战教程(十八)-Keras搭建卷积神经网络及CNN原理详解

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章详细讲解了Keras实现分类学习,以MNIST数字图片为例进行讲解。本篇文章详细讲解了卷积神经网络CNN原理,并通过Keras编写CNN实现了MNIST分类学习案例。基础性文章,希望对您有所帮助! 一…

linux中实现自己的bash

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C 🔥座右铭:“不要等到什么都没有了,才下…

c语言编程题经典100例

以下是一些经典的C语言编程题目,这些题目可以帮助你提高C语言编程技能: 交换两个变量的值判断一个数是否为素数反转一个字符串计算一个数的阶乘计算一个数的平方计算一个数的立方计算一个数的对数计算一个数的倒数求一个数组中所有元素的和求一个数组中…

大语言模型领域的重要术语解释

前言 本人对人工智能非常感兴趣,目前是一名初学者,在研究大语言模型的一些内容。很多模型都是用英文提出的,其中也包括很多概念,有些概念的中文翻译和其想表达的意思不完全一样,所以在这里,想更加精准地帮…

vite vue3配置axios

准备 参考 安装axios yarn add axios中文官网 src下新建request文件夹,该文件下新建index.ts import axios from axios; import { ElMessage } from element-plus;// const errorCodeType function (code: number): string { // let errMessage: string 未知…

SAP的一些当说不说的常识

ABAP中的WDA与FRMbopf restful和odata postman软件 SAP中MM模块相关 SAP 物料 移动类型 https://www.cnblogs.com/rainysblog/p/4133259.html T移动类型文本含义一般用途T-code101GR 收货直接收货工单入库,购买成品入库MIGO/CO11N102用于PO冲销的收货冲销直接…

一阶低通滤波器(一阶巴特沃斯滤波器)

连续传递函数G(s) 离散传递函数G(z) 转换为差分方程形式 一阶巴特沃斯滤波器Filter Designer参数设计:参考之前的博客Matlab的Filter Designer工具设计二阶低通滤波器 设计采样频率100Hz,截止频率20Hz。 注意:设计参数使用在离散系统中&…

【性能测试】稳定性/并发压力测试的TPS计算+5W并发场景设计...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、稳定性测试TPS…