人脸检测(Python)

目录

环境:

初始化摄像头:

初始化FaceDetector对象:

获取摄像头帧:

获取数据:

绘制数据:

显示图像:

完整代码:

环境:

cvzone库:cvzone是一个基于OpenCV的计算机视觉库,它提供了一些方便的功能和工具,用于图像处理、人脸检测、手势识别等应用。cvzone库是由Murtaza Hassan开发的,目前支持Python语言。

cv2库:cv2是OpenCV(Open Source Computer Vision Library)的Python接口库,它是一种广泛使用的计算机视觉和图像处理库。cv2提供了丰富的函数和工具,用于处理图像、视频、进行特征检测、图像变换等各种计算机视觉任务。

可以通过清华镜像源安装

初始化摄像头:

python 复制代码
cap = cv2.VideoCapture(0) # 通常 '0' 指的是内置摄像头
cap.set(3,1280)     #设置摄像头的分辨率为 1280x720
cap.set(4,720)

初始化FaceDetector对象:

FaceDetector是一个基于OpenCV的库,它提供了一个简单而强大的人脸检测器。它使用了OpenCV的级联分类器(Cascade Classifier)来检测人脸,并提供了方便易用的接口。FaceDetector可以在静态图像或实时视频中检测出人脸,并返回每个检测到的人脸的位置和边界框。它还可以根据需要进行参数调整,以适应不同场景和要求。FaceDetector在诸如人脸识别、人脸跟踪、表情检测等应用中非常有用。

python 复制代码
detector = FaceDetector(minDetectionCon=0.5, modelSelection=1)
# modelSelection: 0 表示短距离检测(2米),1 表示长距离检测(5米)

获取摄像头帧:

python 复制代码
 # success: 布尔值,表示是否成功捕获了帧
    # img: 捕获的帧
    success, img = cap.read() # 从摄像头读取当前帧

    # 在图像中检测人脸
    # img: 更新后的图像
    # bboxs: 检测到的人脸边界框列表
    img, bboxs = detector.findFaces(img, draw=False) #在图像中检测人脸,并返回更新后的图像和人脸边界框列表

获取数据:

python 复制代码
 # ---- 获取数据 ---- #
            center = bbox["center"]  # 获取人脸中心坐标
            x, y, w, h = bbox['bbox']  # 获取边界框的坐标和大小
            score = int(bbox['score'][0] * 100)  # 获取识别置信度(百分比)

绘制数据:

python 复制代码
  # ---- 绘制数据 ---- #
            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))  # 绘制矩形框

显示图像:

python 复制代码
 # 在名为'Image'的窗口中显示图像
    cv2.imshow("Image", img)
    # 等待1毫秒,如果按下任意键则关闭窗口
    cv2.waitKey(1)

完整代码:

python 复制代码
#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)
相关推荐
前端精髓4 小时前
结构化输出with_structured_output(抽卡)
python·langchain
拜小白5 小时前
【论文解读】《DeepPanoContext:用全局场景关系图 + 可微关系优做全景 3D 场景理解
深度学习·计算机视觉·全景图
尹人入圣5 小时前
目前热门的IP驱动产业新场景新工具
网络·python·网络协议·tcp/ip
山顶夕景6 小时前
【VLM】AdaCodec:用“预测视觉码”替代逐帧RGB输入
计算机视觉·视频问答·多模态理解·视觉token压缩
Nuanyt6 小时前
Agent 学习笔记(下篇三):上线工程、进阶选择与操作界面(Stage 7 / 7.5 / 8 + 延伸路线)
笔记·python·学习·memory·aiagent·harness
吴卫斌6 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
2601_967987376 小时前
Python——入门级(定义功能def函数)
python·函数·可变参数·默认参数·关键字参数
深圳市快瞳科技有限公司7 小时前
野外鸟类AI识别落地实录:输入适配、结构化输出、去重聚合与置信度分流的工程实践
算法·计算机视觉·鸟类识别·鸟类ai识别·野外鸟类观测·林业调查
专注仿真9 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法
小豆庄9 小时前
视频遮罩追踪退场后ID撞号的排查—多目标场景下的失效
opencv·算法·bug·视频·python3.11