人脸检测(Python)

目录
环境:
初始化摄像头:
初始化FaceDetector对象:
获取摄像头帧:
获取数据:
绘制数据:
显示图像:
完整代码:
环境:
cvzone库:cvzone是一个基于OpenCV的计算机视觉库,它提供了一些方便的功能和工具,用于图像处理、人脸检测、手势识别等应用。cvzone库是由Murtaza Hassan开发的,目前支持Python语言。
cv2库:cv2是OpenCV(Open Source Computer Vision Library)的Python接口库,它是一种广泛使用的计算机视觉和图像处理库。cv2提供了丰富的函数和工具,用于处理图像、视频、进行特征检测、图像变换等各种计算机视觉任务。
可以通过清华镜像源安装
初始化摄像头:
cap = cv2.VideoCapture(0) # 通常 '0' 指的是内置摄像头
cap.set(3,1280) #设置摄像头的分辨率为 1280x720
cap.set(4,720)
初始化FaceDetector对象:
FaceDetector是一个基于OpenCV的库,它提供了一个简单而强大的人脸检测器。它使用了OpenCV的级联分类器(Cascade Classifier)来检测人脸,并提供了方便易用的接口。FaceDetector可以在静态图像或实时视频中检测出人脸,并返回每个检测到的人脸的位置和边界框。它还可以根据需要进行参数调整,以适应不同场景和要求。FaceDetector在诸如人脸识别、人脸跟踪、表情检测等应用中非常有用。
detector = FaceDetector(minDetectionCon=0.5, modelSelection=1)
# modelSelection: 0 表示短距离检测(2米),1 表示长距离检测(5米)
获取摄像头帧:
# success: 布尔值,表示是否成功捕获了帧# img: 捕获的帧success, img = cap.read() # 从摄像头读取当前帧# 在图像中检测人脸# img: 更新后的图像# bboxs: 检测到的人脸边界框列表img, bboxs = detector.findFaces(img, draw=False) #在图像中检测人脸,并返回更新后的图像和人脸边界框列表
获取数据:
# ---- 获取数据 ---- #center = bbox["center"] # 获取人脸中心坐标x, y, w, h = bbox['bbox'] # 获取边界框的坐标和大小score = int(bbox['score'][0] * 100) # 获取识别置信度(百分比)
绘制数据:
# ---- 绘制数据 ---- #cv2.circle(img, center, 5, (255, 0, 255), cv2.FILLED) # 绘制圆形标记人脸中心cvzone.putTextRect(img, f'{score}%', (x, y - 15), border=5) # 显示识别置信度文本cvzone.cornerRect(img, (x, y, w, h)) # 绘制矩形框
显示图像:
# 在名为'Image'的窗口中显示图像cv2.imshow("Image", img)# 等待1毫秒,如果按下任意键则关闭窗口cv2.waitKey(1)
完整代码:
#coding=gbk
# 导入必要的库
import cvzone
from cvzone.FaceDetectionModule import FaceDetector
import cv2
import logging# 配置日志记录
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')# 记录日志信息
logging.info('这是一条信息日志')
logging.warning('这是一条警告日志')
logging.error('这是一条错误日志')
# 初始化摄像头
cap = cv2.VideoCapture(0) # 通常 '0' 指的是内置摄像头
cap.set(3,1280) #设置摄像头的分辨率为 1280x720
cap.set(4,720)# 初始化FaceDetector对象
# minDetectionCon: 最小检测置信度阈值
# modelSelection: 0 表示短距离检测(2米),1 表示长距离检测(5米)
detector = FaceDetector(minDetectionCon=0.5, modelSelection=1)# 循环获取摄像头帧
while True:# success: 布尔值,表示是否成功捕获了帧# img: 捕获的帧success, img = cap.read() # 从摄像头读取当前帧# 在图像中检测人脸# img: 更新后的图像# bboxs: 检测到的人脸边界框列表img, bboxs = detector.findFaces(img, draw=False) #在图像中检测人脸,并返回更新后的图像和人脸边界框列表# 如果检测到人脸if bboxs:# 遍历每个边界框for bbox in bboxs:# bbox 包含 'id', 'bbox', 'score', 'center'# ---- 获取数据 ---- #center = bbox["center"] # 获取人脸中心坐标x, y, w, h = bbox['bbox'] # 获取边界框的坐标和大小score = int(bbox['score'][0] * 100) # 获取识别置信度(百分比)# ---- 绘制数据 ---- #cv2.circle(img, center, 5, (255, 0, 255), cv2.FILLED) # 绘制圆形标记人脸中心cvzone.putTextRect(img, f'{score}%', (x, y - 15), border=5) # 显示识别置信度文本cvzone.cornerRect(img, (x, y, w, h)) # 绘制矩形框# 在名为'Image'的窗口中显示图像cv2.imshow("Image", img)# 等待1毫秒,如果按下任意键则关闭窗口cv2.waitKey(1)
相关文章:
人脸检测(Python)
目录 环境: 初始化摄像头: 初始化FaceDetector对象: 获取摄像头帧: 获取数据: 绘制数据: 显示图像: 完整代码: 环境: cvzone库:cvzone是一个基于…...
Offer150-23:链表中环的入口节点
题目描述:如果一个链表中包含环,找了环的入口节点。例如,在下图所示的链表中,环的入口节点是节点4。 分析:第一步需要确定一个链表中是否包含环,可以用快慢指针来解决这个问题。定义两个指针,同时从链表的头…...
【linux】服务器创建RAID1
【linux】服务器创建RAID1 文章目录 【linux】服务器创建RAID1一、配置介绍raid介绍raid类型RAID 0:RAID 1:RAID 5:RAID 6:二、配置RAID硬件RAID:软件RAID:三、软件配置RAID1(以linux为例)1.先进入管理员模式2.安装mdadm工具3.创建raid1数组4.查看RAID数组状态5.格式化和挂载…...
记录自己Ubuntu加Nvidia驱动从入门到入土的一天
前言 记录一下自己这波澜壮阔的一天,遇到了很多问题,解决了很多问题,但是还有很多问题,终于在晚上的零点彻底放弃,重启windows。 安装乌班图 1.安装虚拟机 我开始什么操作系统的基础都没有,网上随便搜了…...
基于现有Docker镜像构建新的Docker镜像
1.拉取ubuntu 22.04的系统镜像 docker pull ubuntu:22.04 拉取成功后在DockerDesktop中可发现该镜像 2.启动刚才接取的ubuntu镜像 docker run --name Ubuntu22.04 -it -d -p 22:22 -p 80:80 -p 443:443 340d9b015b194dc6e2a13938944e0d016e57b9679963fdeb9ce021daac430221 启…...
Java 静态变量、静态代码块、普通代码块、构造方法的执行顺序
今天碰到这个问题,看了课程以及资料,做出解答。这是我自己绘制的图,按从上到下,从左到右的顺序执行。如有问题请联系我修正。 要点: 1、执行顺序分为两步,类加载和初始化阶段。 2、因为静态变量和静态代码块…...
计算机网络性能指标概述:速率、带宽、时延等
在计算机网络中,性能指标是衡量网络效率和质量的重要参数。本文将综合三篇关于计算机网络性能指标的文章,详细介绍速率、带宽、吞吐量、时延、时延带宽积、往返时延(RTT) 和利用率的概念及其在网络中的应用。 1. 速率(…...
众所周知沃尔玛1P是怎么运营?
沃尔玛的1P模式,即第一方供应商模式,是其独特的采购策略。在这种模式下,供应商先将商品卖给沃尔玛,由沃尔玛负责库存管理和销售。沃尔玛通过强大的采购和物流能力控制库存,确保商品品质,为客户提供更加…...
【Linux】静态库的制作和使用详解
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...
2.贪心算法.基础
2.贪心算法.基础 基础知识题目1.分发饼干2.摆动序列2.1.思路二:动态规划法 3.最大子序和4.买股票的最佳时机24.1.思路二:动态规划法4.2.买股票的最佳时机 5.跳跃游戏5.1.跳跃游戏2 6.K次取反后最大化的数组和7.加油站8.分发糖果 总结 基础知识 什么是贪…...
用Python轻松转换PDF为CSV
数据的可访问性和可操作性是数据管理的核心要素。PDF格式因其跨平台兼容性和版面固定性,在文档分享和打印方面表现出色,尤其适用于报表、调查结果等数据的存储。然而,PDF的非结构化特性限制了其在数据分析领域的应用。相比之下,CS…...
关于微信支付-商户平台:查询订单提示“查询失败:操作失败,请稍候重试”的分析
目录 引子 分析 应对 小结 引子 在开发和实施微信 JSAPI 支付的应用后,我们遇到了一些问题,订单的状态更新不正常,当然我们首先需要从自身寻找原因和完善解决问题的办法和方案。在支付的过程中,客户会给我们一些反馈…...
掌握【Python异常处理】:打造健壮代码的现代编程指南
目录 编辑 1. 什么是异常? 知识点 示例 小李的理解 2. 常见的内置异常类型 知识点 示例 小李的理解 3. 异常机制的意义 知识点 示例 小李的理解 4. 如何处理异常 知识点 示例 小李的理解 5. 抛出异常 知识点 示例 小李的理解 6. Python内置…...
STM32点灯闪烁
stm32c8t6引脚图 开发板引脚图 GPIO端口的每个位可以由软件分别配置成 多种模式。 ─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能 配置GPIO端口步骤:开启时钟->使用结构体设置输出模式…...
Java-01-源码篇-04集合-05-SortedMap NavigableMap TreeMap
目录 一,SortedMap 二,NavigableMap 三,TreeMap 3.1 TreeMap 继承结构 3.2 TreeMap 属性 3.3 TreeMap 构造器 3.4 TreeMap 内部类 3.4.1 Values 3.4.2 KeySet 3.4.3 EntrySet 3.4.5 相关集合迭代器 3.4.5.1 PrivateEntryIterato…...
拥抱 AGI:PieDataCS 引领云原生数据计算系统新范式
自2023年后,人工智能技术进入了一个更为成熟和广泛应用的阶段,人工通用智能(AGI)这一概念也成为了科技界和产业界热议的焦点。本文将结合 AGI 时代背景,从架构设计到落地实践,详细介绍拓数派云原生数据计算…...
开放式耳机哪个品牌好?开放式耳机推荐
开放式耳机因其独特的设计,提供了更自然的听音体验和更好的环境声音感知,尤其适合长时间佩戴和户外运动使用,下面来推荐几款表现出色的开放式耳机: 悠律ringbuds pro凝声环(499元):凭借时尚潮流…...
kubernetes dashboard安装
1.查看符合自己版本的kubernetes Dashboard 比如我使用的是1.23.0版本 https://github.com/kubernetes/dashboard/releases?page5 对应版本 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml修改对应的yaml,…...
【MySQL】3.表的操作
表的操作 一.创建表二.查看表三.修改表四.删除表 一.创建表 create table [if not exists] tb_name( field1 datatype comment 说明, field2 datatype, field3 datatype) charsetutf8 collateutf8_gerenal_ci engineInnoDB//表的编码集,校验集如果不指定ÿ…...
十一、作业
1.从大到小输出 写代码将三个整数数按从大到小输出。 void Swap(int* px, int* py) {int tmp *px;*px *py;*py tmp;} int main() {int a 0;int b 0;int c 0;scanf("%d %d %d", &a, &b, &c);int n 0;if (a<b){Swap(&a, &b);}if (a &l…...
Qt5.15.2在RK3588上的多媒体支持问题:如何正确配置GStreamer插件避免‘no service found‘错误
Qt5.15.2在RK3588上的多媒体支持问题:如何正确配置GStreamer插件避免no service found错误 在嵌入式Linux系统上部署Qt多媒体应用时,开发者经常会遇到各种依赖库和插件配置问题。特别是在RK3588这样的高性能ARM平台上,QtMultimedia模块与GStr…...
P1103 书本整理【洛谷算法习题】
P1103 书本整理 网页链接 P1103 书本整理 题目描述 Frank 是一个非常喜爱整洁的人。他有一大堆书和一个书架,想要把书放在书架上。书架可以放下所有的书,所以 Frank 首先将书按高度顺序排列在书架上。但是 Frank 发现,由于很多书的宽度不…...
ESP32-WROOM-32E开发板快速上手:5分钟搞定Arduino环境配置与LED灯控制
ESP32-WROOM-32E开发板极速入门:5分钟玩转LED控制 刚拿到ESP32-WROOM-32E开发板时,最让人兴奋的莫过于立刻让它"活"起来。作为乐鑫推出的明星级物联网开发板,它集Wi-Fi/蓝牙双模、丰富外设接口和超低功耗于一身,而Ardui…...
生信小白也能搞定的实验室内部工具:手把手教你用SequenceServer+Docker搭建专属BLAST查询网站
生物信息学零基础实战:用SequenceServer与Docker构建实验室专属BLAST平台 当实验室积累的基因序列数据越来越多,每次都要上传到NCBI进行BLAST比对既费时又存在数据安全风险。有没有一种方法,能让团队成员像使用百度搜索一样简单地在内部查询这…...
告别单点故障:Azkaban 3.84.4多Executor集群部署与性能调优实战
告别单点故障:Azkaban 3.84.4多Executor集群部署与性能调优实战 在数据密集型企业的日常运营中,任务调度系统如同中枢神经般重要。当团队规模扩大、数据处理需求激增时,单节点Azkaban往往会成为性能瓶颈——任务队列堆积、响应延迟࿰…...
CogVideoX-2b行业落地:媒体公司内容生产提效实战分享
CogVideoX-2b行业落地:媒体公司内容生产提效实战分享 1. 前言:视频内容生产的痛点与机遇 作为一家媒体公司的技术负责人,我深知视频内容生产面临的挑战。每天需要制作大量短视频内容,从新闻快讯到产品介绍,从社交媒体…...
【实战篇】Nginx核心配置与性能优化全攻略
1. Nginx基础配置快速上手 第一次接触Nginx时,我被它简洁的配置文件结构惊艳到了。相比其他Web服务器动辄几百行的配置,Nginx的配置文件就像一份精心设计的菜谱,每个指令都恰到好处。先带大家看看最基本的配置结构: # 全局块 user…...
救命!2026爆款PPT一键制作工具实测,新手也能5分钟出片,告别熬夜手搓无标题
作为常年和PPT打交道的AI博主,每天都能收到粉丝私信轰炸:“做PPT有没有捷径?”“AI能不能帮我快速出稿?”“新手零基础,半天排不出一页像样的版面”……懂的都懂!谁没为了一份PPT熬到凌晨?找模板…...
AI编程实战:工具选型、效率提升与代码优化技巧
2026年,AI编程已进入“自动驾驶时代”,据行业数据显示,AI编程工具可使开发者效率提升30%-70%,中小企业开发成本降低70%,个人开发者可快速实现产品落地。对于开发者而言,熟练运用AI编程工具,不是…...
终极Windows驱动管理指南:如何用DriverStore Explorer快速释放30GB磁盘空间
终极Windows驱动管理指南:如何用DriverStore Explorer快速释放30GB磁盘空间 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer DriverStore Explorer(简称RAPR&…...
