OpenCV2D 特征框架 (22)人脸检测的一个类cv::FaceDetectorYN的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::FaceDetectorYN 是 OpenCV 中用于人脸检测的一个类,它基于深度学习模型实现。这个类是 OpenCV DNN(Deep Neural Network module)模块的一部分,利用预先训练好的深度神经网络模型来执行高效的人脸检测任务。

主要特性

  • 高效的检测:FaceDetectorYN 使用了 Yunet 模型,这是一个轻量级且高效的卷积神经网络(CNN),专门设计用于快速准确地在图像或视频帧中检测人脸 1。
  • 支持多种输入格式:可以处理静态图像、视频流以及实时摄像头输入。
  • 可配置性:允许用户调整置信度阈值、非极大值抑制(NMS)阈值等参数,以适应不同的应用场景5。
  • 硬件加速支持:可以通过选择不同的后端和目标设备(如 CPU、GPU 或 NPU)来加速推理过程

成员函数介绍

  • create:创建一个 FaceDetectorYN 对象。
    • model, config: 分别是模型文件路径和配置文件路径。对于大多数预训练模型,仅需提供模型文件路径即可。
    • input_size: 输入图像的尺寸(宽度, 高度)。这通常与模型训练时使用的输入尺寸相匹配。
    • score_threshold: 置信度阈值,低于此分数的人脸将被忽略,默认值为0.9。
    • nms_threshold: 非极大值抑制(NMS)阈值,用于去除重叠的人脸框,默认值为0.3。
    • top_k: 保留的最高得分边界框数量,默认值为5000。
    • setInputSize:设置输入图像的尺寸。
    • width, height: 输入图像的宽度和高度。
  • detect:执行人脸检测,并返回检测到的人脸信息。
    • image: 要检测的图像。
    • faces: 输出参数,包含检测到的所有人脸的位置信息和其他相关数据。具体的数据结构取决于实现细节,但通常每个条目会包含一个人脸的位置(如边界框)、置信度分数以及其他可能的关键点位置。
  • setScoreThreshold:设置置信度分数阈值。
    • threshold: 新的置信度分数阈值。
  • setNMSThreshold:设置非极大值抑制(NMS)阈值。
    • threshold: 新的NMS阈值。
  • setTopK:设置保留的最高得分边界框数量。
    • k: 新的最大边界框数量。
  • setPreferableBackend:设置首选的DNN后端。
    • backend: 后端标识符,例如 cv::dnn::DNN_BACKEND_OPENCV 或 cv::dnn::DNN_BACKEND_CUDA。
  • setPreferableTarget:设置首选的目标设备。
    • target: 目标设备标识符,例如 cv::dnn::DNN_TARGET_CPU 或 cv::dnn::DNN_TARGET_CUDA。

代码示例

#include <iostream>
#include <opencv2/dnn.hpp>
#include <opencv2/opencv.hpp>

int main()
{
   
   
    // 模型文件路径
    std::string model_path = "face_detection_yunet_2023mar.onnx";

    // 创建 FaceDetectorYN 对象
    cv::Ptr< cv::FaceDetectorYN > detector = cv::FaceDetectorYN::create( model_path, "", cv::Si
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村北头的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值