首页 > 编程语言 >使用OpenCV中的DNN模块进行人脸识别的官方示例代码(C++版本):

使用OpenCV中的DNN模块进行人脸识别的官方示例代码(C++版本):

时间:2023-07-16 16:11:41浏览次数:37  
标签:人脸识别 示例 int image DNN detections startY 人脸 path

chatgpt生成

#include <opencv2/core.hpp> #include <opencv2/dnn.hpp> #include <opencv2/imgproc.hpp> #include <opencv2/highgui.hpp> using namespace cv; using namespace dnn; int main() { // 加载模型和配置文件 String model_path = "path_to_model_file"; String config_path = "path_to_config_file"; Net net = readNetFromCaffe(config_path, model_path); // 读取输入图像 Mat image = imread("path_to_input_image"); // 构建blob,将图像输入模型中进行预处理 Mat blob = blobFromImage(image, 1.0, Size(300, 300), Scalar(104.0, 177.0, 123.0)); // 设置输入blob net.setInput(blob); // 运行前向传播,获取人脸检测结果 Mat detections = net.forward(); // 遍历检测结果 for (int i = 0; i < detections.size[2]; i++) { float confidence = detections.at<float>(0, 0, i, 2); // 获取置信度 if (confidence > 0.5) // 设置置信度阈值 { // 计算人脸框的位置 int startX = static_cast<int>(detections.at<float>(0, 0, i, 3) * image.cols); int startY = static_cast<int>(detections.at<float>(0, 0, i, 4) * image.rows); int endX = static_cast<int>(detections.at<float>(0, 0, i, 5) * image.cols); int endY = static_cast<int>(detections.at<float>(0, 0, i, 6) * image.rows); // 绘制人脸框和置信度 String text = format("%.2f%%", confidence * 100); int y = startY - 10 > 10 ? startY - 10 : startY + 10; rectangle(image, Point(startX, startY), Point(endX, endY), Scalar(0, 255, 0), 2); putText(image, text, Point(startX, y), FONT_HERSHEY_SIMPLEX, 0.45, Scalar(0, 255, 0), 2); } } // 显示输出图像 imshow("Output", image); waitKey(0); destroyAllWindows(); return 0; }

请确保替换示例代码中的model_pathconfig_pathimage_path为正确的文件路径。

以上代码将从给定的模型文件和配置文件中加载人脸检测器,并对输入图像进行人脸检测,然后显示输出图像,并在检测到的人脸周围绘制边框和检测到的置信度。

标签:人脸识别,示例,int,image,DNN,detections,startY,人脸,path
From: https://www.cnblogs.com/dq0618/p/17558003.html

相关文章

  • lightdb plpgsql函数in/inout参数示例
    lightdb支持oraclepl/sql以及开源postgresqlPlpgsql两种过程性(增强)语言。本文讲解pgpgsql函数出参的典型用法及限制。注:匿名块实际上走的是plorasql,而非plpgsql,即使调用的是plpgsql过程。本文我们假设对于函数、存储过程的调用是进行逻辑处理,而不是返回结果集或游......
  • API接口技术开发分享案例,拼多多获得搜索词推荐,接口支持高并发,PHP语言演示案例,支持对语
    ​接口获取数据响应参数接入pinduoduo.item_search_suggest-获得搜索词推荐 公共参数名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_name......
  • 对 Golang 中 reflect 反射包的示例
    引子//由于反射是基于类型系统(typesystem)的,所以先简单了解下类型系统typeMyIntintREADMEvariintvarjMyInt//上面的i是int类型,j是MyInt类型,i和j是不同的静态类型,尽管他们都有相同的相关类型(这里是int)//它们不能互相赋值,除非通过强制的类型转换......
  • diff 与 patch 命令的示例
    diff#diff以逐行的方式,比较文本文件的异同处,特别是比较两个版本不同的文件,如果指定要比较目录,则比较目录中相同文件名的文件,但不会比较其中子目录#diff的输出描述两个文件的不同,告诉用户怎样改变第一个文件之后与第二个文件保持一致(它是以"行"为单位进行比较的)##-r对比......
  • 设计模式-桥接模式在Java中的使用示例
    场景桥接模式情境引入假如我们需要大中小3种型号的画笔,能够绘制12种不同的颜色,如果使用蜡笔,需要准备3×12=36支,但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及到的对象个数仅为3+12=15,远小于36,却能实现与36支蜡笔同样的功能。如果增加一种新型号的画......
  • mongodb 入门 和 php示例
    内容太多了,感觉不好写,就写点入门的吧,其他参考参考_MonogDB中文网(mongodb.net.cn)虽然内容是机器翻译的,但也还好,基本能看. 相关概念: database数据库collection集合,相当于数据库表document文档,相当于数据记录行 dockerrun-d--namemongo-p27017:27......
  • 设计模式-建造者模式在Java中使用示例
    场景建造者模式复杂对象的组装与创建没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题。建造者模式又称为生成器模式,它是一种较为复杂、使用......
  • rabbitmq php 代码示例
    交换机类型direct:直连交换机,根据路由键投递到与绑定键匹配的队列。fanout:扇形交换机,采用广播模式,投递到所有与之绑定的队列。topic :主题交换机,对路由键与绑定键进行模式匹配后再投递到相应的队列。headers:头交换机,不处理路由键,而是根据发送的消息内容中的heade......
  • 树莓派人脸识别系统-计算机毕业设计源码+LW文档
    中文摘要计算机技术的发展推动了经济的发展,如今几乎所有的企业都离不开计算机软件,物业单位更是如此。在信息技术不断完善下,物业单位作为人们日常生活不可或缺的组成部分,发挥着重要的作用。然而,随着小区人员的增加,小区门禁管理繁琐,效率低下、进出等待时间长、满意度不高,阻碍了小区......
  • C# 选择文件选择设置类型示例
     例子:OpenFileDialogdialog=newOpenFileDialog();dialog.Multiselect=false;//该值确定是否可以选择多个文件dialog.Title="请选择文件";dialog.Filter="图像文件(*.jpg;*.png;*.bmp)|*.jpg;*.png;*.bmp;*.jpg......