Python人脸识别

#头文件:
import cv2 as cv
import numpy as np
import os
from PIL import Image
import xlsxwriter
import psutil
import time
#人脸录入
def get_image_name(name):
name_map = {f.split('.')[1]:int(f.split('.')[0]) for f in os.listdir("./picture")}
if not name_map:
name_number = 1
elif name in name_map:
name_number = name_map[name]
else:
name_number = max(name_map.values()) + 1
return './picture/' + str(name_number) + "." + name + '.jpg'
def save_face(faces,img,name):
if len(faces) == 0:
print("没有检测到人脸,请调整")
return
if len(faces) >1:
print("检测到多个人脸")
return
x,y,w,h = faces[0]
cv.imwrite(get_image_name(name),img[y:y+h,x:x+w])
print("录上了")
def img_extract_faces(img):
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
face_classifier = cv.CascadeClassifier('./haarcascade_frontalface_alt2.xml')
return face_classifier.detectMultiScale(gray, 1.1, 5), gray
def main():
cap = cv.VideoCapture(0)
if not cap.isOpened():
print('连接失败')
name = input("what is your name? ")
while True:
ret, frame = cap.read()
if not ret:
print("读帧失败")
break
#检测并提取人脸信息
faces, gray = img_extract_faces(frame)
for x, y, w, h in faces:
cv.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), thickness=2)
cv.imshow("还好我拼命护住了脸,英俊的相貌才得以保存", frame)
k = cv.waitKey(1)
if k == ord('s'):
save_face(faces, gray, name)
elif k == ord('q'):
break
cap.release()
cv.destroyAllWindows()
main()
#训练数据
faces_list = []
labels = []
def main():
for f in os.listdir('./picture'):
img = cv.imread(os.path.join('./picture',f), 0)
face_classifier = cv.CascadeClassifier(r'E:\Users\liufugui\PycharmProjects\pythonProject4\venv\Lib\site-packages\cv2\data\haarcascade_frontalface_alt2.xml')
faces = face_classifier.detectMultiScale(img)
if len(faces) == 0:
continue
x, y, w, h = faces[0]
faces_list.append(img[y:y+h, x:x+w])
labels.append(int(f.split('.')[0]))
recognizer = cv.face.LBPHFaceRecognizer_create()
recognizer.train(faces_list, np.array(labels))
recognizer.write('train.yml')
main()
#人脸识别
def main():
cap = cv.VideoCapture(0)
if not cap.isOpened():
print('连接失败')
name_map = {int(f.split('.')[0]) : f.split('.')[1] for f in os.listdir("./picture")}
while True:
ret, frame = cap.read()
if not ret:
print("读帧失败")
break
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
recognizer = cv.face.LBPHFaceRecognizer_create()
recognizer.read('train.yml')
face_classifier = cv.CascadeClassifier('./haarcascade_frontalface_alt2.xml')
faces = face_classifier.detectMultiScale(gray)
for (x, y, w, h) in faces:
img_id, confidence = recognizer.predict(gray[y:y + h, x:x + w])
if confidence > 75:
name = '未识别'
else:
name = name_map[img_id]
cv.putText(
img=frame, org=(x, y), text=name,
fontFace=cv.FONT_HERSHEY_SIMPLEX, fontScale=0.75, color=(0, 255, 0), thickness=1
)
cv.circle(
img=frame, center=(x + w // 2, y + h // 2), radius=w//2,
color=(255, 0, 0), thickness=1
)
cv.imshow("还好我拼命护住了脸,英俊的相貌才得以保存", frame)
if cv.waitKey(1) == ord('q'):
break
cap.release()
cv.destroyAllWindows()
main()
相关文章:
Python人脸识别
#头文件:import cv2 as cvimport numpy as npimport osfrom PIL import Imageimport xlsxwriterimport psutilimport time#人脸录入def get_image_name(name):name_map {f.split(.)[1]:int(f.split(.)[0]) for f in os.listdir("./picture")}if not name…...
我用Python写了一个下载网站所有内容的软件,可见即可下,室友表示非常好用
Python 写一个下载网站内容的GUI工具,所有内容都能下载,真的太方便了!前言本次要实现的功能效果展示代码实战获取数据GUI部分最后前言 哈喽大家好,我是轻松。 今天我们分享一个用Python写下载视频弹幕评论的代码。 之前自游写了…...
【M365运维】扩充OneDrive存储空间
【问题】E3,E5等订阅许可下,默认的OneDrive存储空间为 1TB,满了之后该如何扩充?【解决】1.运行Powershell2. 链接到Sharepoint Online: Connect-SPOSerivce -url https://<这里通常是公司名>-admin.sharepoint.com3. 定义三个扩充空间时…...
hashcat(爆破工具,支持GPU,精)
目录 简介 分类 参数 -m hash的类型 -a 攻击方式 掩码 使用方法 字典破解 简介 虽然John the R...
【机器学习】什么是监督学习、半监督学习、无监督学习、自监督学习以及弱监督学习
监督学习(Supervised Learning):利用大量的标注数据来训练模型,模型最终学习到输入与输出标签之间的相关性。半监督学习(Semi- supervised Learning):利用少量有标签数据和大量无标签数据来训练…...
HashiCorp packer 制作AWS AMI镜像示例
准备工作 验证AWS 可以先手动启动一个EC2实例验证自己创建的VPC, subnet, internet gateway 和routetable等, 确保实例创建后不会出现连接不上的情况. 可以按照下面的链接配置避免连接超时 https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/TroubleshootingInstan…...
【java基础】根据泛型动态构造jackson的TypeReference(json反序列化为带泛型的类的对象)
根据泛型动态构造jackson的TypeReference引出问题使用TypeReference反序列化的例子根据泛型动态构造TypeReference带泛型的类如何表示?完成HttpClient的实现引出问题 将json字符串反序列化为带泛型的类的对象怎么操作?怎么根据TypeReference<List<…...
为什么VMware会给我多创建了两个网络呢?Windows和Linux为什么可以彼此ping的通呢
为什么VMware会给我多创建了两个网络呢?Windows和Linux为什么可以彼此ping的通呢 文章目录为什么VMware会给我多创建了两个网络呢?Windows和Linux为什么可以彼此ping的通呢桥接模式ANT模式(VMnet8)仅主机模式(VMnet1&a…...
服务器带宽承载多少人同时访问计算方法-浏览器中查看当前网页所有资源数据大小-客服系统高并发承载人数【唯一客服】...
浏览器中怎么查看当前网页所有资源的数据大小 在开发者工具的“网络”选项卡中,可以看到所有请求和响应的详细信息,包括每个资源的大小。如果需要查看网页所有资源的总大小,可以按照以下步骤操作: 打开要查看的网页。打开开发者工…...
给新手----编译VSOMEIP保姆级别教程
前言:当你学习了SOMEIP理论基础后,一定很希望上手实操一波吧,本文档以SOMEIP协议里比较成熟的VSOMEIP开源框架为例,带你从0到1实现开源框架的下载到上手,坐稳啦,开车!!!&…...
MarkDown设置上下标
上标:$a^{2-5}$ 下标:$a_{n-1}$显示:结果 上标:a2−5a^{2-5}a2−5 下标:an−1a_{n-1}an−1 如果上下标中需要多个显示,需要用{}括起来,否则就像下面一样 上标:$a^2-5$ 下标&…...
Python批量爬取游戏卡牌信息
文章目录前言一、需求二、分析三、处理四、运行结果前言 本系列文章来源于真实的需求本系列文章你来提我来做本系列文章仅供学习参考阅读人群:有Python基础、Scrapy框架基础 一、需求 全站爬取游戏卡牌信息 二、分析 查看网页源代码,图片资源是否存在…...
什么是PCB走线的3W原则
在设计PCB的时候我们会经常说到3W原则, 它指的是两个PCB走线它们的中心间距不小于3倍线宽,这个W就是PCB走线的宽度。这样做的目的主要是为了减小走线1和走线2之间的串扰,一般对于时钟信号,复位信号等一些关键信号需要遵循3W原则。…...
计算机网络面试总结
计算机网络 1.计算机网络 2.计算机网络拓扑结构 3.计算机网络覆盖 4.时延 5.交换技术 6.单工、半双工、全双工 7.OSI模型 8.TCP/IP模型 9.物理层有哪些设备 10.数据链路层介质访问控制 11.数据链路层有哪些设备 12.数据链路层流量控制 13.数据链路层的三个基本问题和解决方法 1…...
VsCode SSH远程连接服务器【内网穿透公网连接】
文章目录1.前言2.VS code的安装和设置2.1 VS code的下载安装2.2 OpenSSH的启用2.3 为VS code配置ssh2.4 局域网内测试VS code的ssh连接2.5 Cpolar下载安装3.Cpolar端口设置3.1 Cpolar云端设置3.2 Cpolar本地设置4.公网访问测试5.结语1.前言 记得笔者小时候看电视,看…...
十八、动画与canvas
1.RequestAnimationFrame 早期定时动画 setTimeout和setInterval不能保证时间精度,第二个参数只能保证何时将代码添加到浏览器的任务队列 requestAnimationFrame(cb)的cb在浏览器重绘屏幕前调用 function updateProgress(){const div document.getElementById(d…...
自动化测试学习-Day4-selenium的安装和8种定位方法
哈喽,大家好! 本人21年毕业,软件工程专业,毕业后一直从事金融行业的软件测试。 希望大家一起见证一名卑微测试的成长之路。 目录 一、环境准备 1.浏览器下载 2.浏览器驱动下载 3.下载selenium 二、Selenium定位元素的8种方法…...
【Kubernetes】第二十五篇 - 布署 nodejs 后端项目(下)
一,前言 上一篇,介绍了部署后端项目之前,需要的准备的相关配置信息; 本篇,创建 Deployment、Service 完成后端项目布署; 二,解决 jenkins 安全问题 构建 docker 镜像之后,登录 do…...
贪心算法之区间问题总结
一、跳跃游戏跳跃游戏类的问题,不关心每一步怎么跳,只需要关心最大覆盖范围这里注意i是在当前最大可覆盖范围内遍历,如{2,1,0,1},就是在0~2范围内遍历,千万不能0~numsSize-1范围内遍历!!&#x…...
无线WiFi安全渗透与攻防(七)之WIFI07-WEP-wifite自动化渗透WEP加密
WIFI07-WEP-wifite自动化渗透WEP加密 1.wifite介绍 wifite是一款自动化wep、wpa以及wps破解工具,不支持windows和osx。wifite的特点是可以同时攻击多个采用wep和wpa加密的网络。wifite只需简单的配置即可自动化运行,期间无需人工干预。 目前支持任何li…...
ANI-RSS自定义扩展技术深度解析:架构设计与高级定制方案
ANI-RSS自定义扩展技术深度解析:架构设计与高级定制方案 【免费下载链接】ani-rss 基于RSS自动追番、订阅、下载、刮削、洗版 项目地址: https://gitcode.com/gh_mirrors/an/ani-rss ANI-RSS作为一款基于RSS的自动化追番解决方案,其技术架构提供了…...
ChatGPT API安全调用规范,如何防止Prompt注入、数据泄露与越权访问(附OWASP合规检查清单)
更多请点击: https://kaifayun.com 第一章:ChatGPT API安全调用规范总览 安全调用ChatGPT API是保障系统稳定性、数据隐私与合规运营的前提。开发者必须在身份认证、请求构造、响应处理及密钥生命周期管理等各环节建立防御性实践,避免因配置…...
Qt串口通信与STM32 PWM实战:滑动条控制RGB灯全流程解析
1. 项目概述与核心价值最近在做一个智能家居控制面板的原型,核心需求之一就是通过一个直观的图形界面,去实时调节RGB氛围灯的亮度和颜色。这听起来像是把手机App上的功能搬到了嵌入式设备上,但背后的实现链路却完全不同。我选择了Qt作为上位机…...
Dism++:Windows系统维护的终极免费工具,一键解决卡顿和更新问题
Dism:Windows系统维护的终极免费工具,一键解决卡顿和更新问题 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language 你是否曾为Windows系统运行…...
终极Mac抢票解决方案:12306ForMac让你的购票体验飞起来
终极Mac抢票解决方案:12306ForMac让你的购票体验飞起来 【免费下载链接】12306ForMac An unofficial 12306 Client for Mac 项目地址: https://gitcode.com/gh_mirrors/12/12306ForMac 还在为Mac上抢不到火车票而烦恼吗?作为Mac用户,你…...
网络安全自学顺序|千万不要搞反了
网络安全自学顺序|千万不要搞反了 想入行网络安全?别瞎学!这帮你少走半年弯路👇 从0到1进阶路径(按顺序学): 1.计算机网络基础(TCP/IP、OSI模型) 2.Linux系统与命令行…...
G3000,MG3660,MG3640S,TS3380,G3800,TS3480,TS3680,TS3460,TS3350,MG6380报错5B00,P07,E08,1700,5b04废墨垫清零,好用
下载:点这里下载 备用下载:https://pan.baidu.com/s/1WrPFvdV8sq-qI3_NgO2EvA?pwd0000 常见型号如下: G系列 G1000、G1100、G1200、G1400、G1500、G1800、G1900、G1010、G1110、G1120、G1410、G1420、G1411、G1510、G1520、G1810、G1820、…...
终极AMD Ryzen性能调优指南:5分钟掌握SMUDebugTool免费调试神器
终极AMD Ryzen性能调优指南:5分钟掌握SMUDebugTool免费调试神器 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: h…...
STL转STEP格式转换实战指南:如何实现CAD模型的无缝迁移与工程化应用
STL转STEP格式转换实战指南:如何实现CAD模型的无缝迁移与工程化应用 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在数字化制造与工程设计领域,STL格式作为3D打印的标…...
如何快速解锁QQ音乐加密音频的完整指南:QMCDecode工具终极解决方案
如何快速解锁QQ音乐加密音频的完整指南:QMCDecode工具终极解决方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录&…...
