首页 > Python资料 博客日记
人脸检测(Python)
2024-07-12 21:00:05Python资料围观89次
文章人脸检测(Python)分享给大家,欢迎收藏Python资料网,专注分享技术知识
目录
环境:
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)
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程