OpenCV人脸分析------绘制面部关键点函数drawFacemarks()

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

算法描述

该函数用于在图像上绘制面部关键点(facial landmarks),例如使用 FacemarkLBF, FacemarkKazemi 等算法检测到的 68 个面部关键点。
它会将每个关键点以圆形标记绘制在输入图像上,方便可视化检测结果。

参数说明

参数名类型描述
imageInputOutputArray输入输出图像,通常是 BGR 彩色图像 (CV_8UC3)。绘制后会在原图上画出关键点。
pointsInputArray关键点坐标集合,通常是一个 std::vectorcv::Point2f 或 cv::Mat 类型。每个元素代表一个关键点的 (x, y) 坐标。
colorScalar可选参数,绘制关键点的颜色,默认为蓝色 Scalar(255, 0, 0)。如果是 BGR 图像,可以传入 (B, G, R) 值。

示例代码


#include <opencv2/opencv.hpp>
#include <opencv2/face.hpp>using namespace cv;
using namespace cv::face;
using namespace std;int main() {// 加载图像Mat img = imread("/media/dingxin/data/study/OpenCV/sources/images/Lenna.png");if (img.empty()) {cerr << "无法加载图像!" << endl;return -1;}// 创建 Facemark 实例(如 LBF)Ptr<Facemark> facemark = FacemarkLBF::create();facemark->loadModel("lbfmodel.yaml");// 检测人脸(使用 Haar 分类器或其它方式)CascadeClassifier face_cascade;face_cascade.load("haarcascade_frontalface_default.xml");vector<Rect> faces;Mat gray;cvtColor(img, gray, COLOR_BGR2GRAY);face_cascade.detectMultiScale(gray, faces);// 存储关键点vector<vector<Point2f>> landmarks;// 检测面部关键点bool success = facemark->fit(img, faces, landmarks);if (success) {for (size_t i = 0; i < landmarks.size(); i++) {// ✅ 绘制所有关键点drawFacemarks(img, landmarks[i], Scalar(0, 255, 0)); // 绿色点}imshow("Facemarks", img);waitKey(0);} else {cout << "未能检测到面部关键点。" << endl;}return 0;
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87974.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux内核ext4 extent:解决大文件存储难题的关键

在Linux 操作系统的庞大生态中&#xff0c;文件系统犹如一座城市的基础设施&#xff0c;支撑着数据的有序存储与高效访问。而 ext4 文件系统&#xff0c;作为 Linux 文件系统家族中的重要一员&#xff0c;自诞生起便凭借诸多先进特性备受瞩目。其中&#xff0c;extent 机制堪称…

reactnative页面适配UI设计尺寸px转dp的完美解决方案px2dp精要篇

你的 px2dp 函数基本思路是正确的&#xff0c;但可以进一步优化以确保更精确的适配。以下是改进后的完美精确方案&#xff1a; 完美精确的适配方案 import { Dimensions, PixelRatio, Platform, ScaledSize } from react-native;// 获取屏幕尺寸&#xff08;考虑横竖屏&#…

【世纪龙科技】汽车钣金虚拟仿真教学实训软件

在汽车后市场人才紧缺的当下&#xff0c;职业院校汽车钣金教学却长期面临“三难困境”&#xff1a;实训设备昂贵且损耗快、学生实操机会稀缺、教学评价依赖主观经验。江苏世纪龙科技公司以十余年汽车教育数字化积淀为基石&#xff0c;推出《汽车钣金教学软件》&#xff0c;通过…

Fiddler中文版抓包工具在后端API调试与Mock中的巧用

在现代开发中&#xff0c;前后端往往分属不同小组甚至不同公司&#xff0c;接口联调变得至关重要。尤其是在多团队合作、后端接口尚未完成或频繁变动的项目中&#xff0c;前端开发进度容易被阻碍。此时&#xff0c;通过灵活运用 Fiddler抓包工具&#xff0c;前端可以在后端接口…

基于 Flask框架开发的轻量级招聘网站

简单的招聘网站示例 这是一个基于 Flask 框架开发的轻量级招聘网站示例&#xff0c;采用 Jinja2 模板引擎和 Bootstrap 前端框架&#xff0c;模仿 拉勾网 风格&#xff0c;实现了招聘平台的核心功能。系统支持 个人用户 和 企业用户 两种角色&#xff0c;个人用户可以浏览职位、…

2025 年使用大模型进行软件工程:现实检验

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

如何使用单例模式保证全局唯一实例(复杂版本)

/// <summary> /// 登录管理类&#xff08;单例模式&#xff09;&#xff0c;负责用户登录、注销及用户信息管理 /// </summary> public class LoginMananger {// 用于线程同步的锁对象static object _lockObj new object();// 单例实例&#xff08;延迟初始化&am…

瑞斯拜考研词汇课笔记

学习视频链接&#xff1a;瑞斯拜考研词汇系统课-外刊50篇- 第一讲_哔哩哔哩_bilibili Text 1 1.气候危机让普通人经历了额外六周的高温天气。 The climate crisis caused the average person to experience six extra weeks of hot days. 2.碳排放是全球变暖的重要原因之一。 C…

SqlServer安装后JDBC连接失败——TCP/IP

朋友公司接了个项目&#xff0c;甲方BaBa用的数据库是SqlServer 2022的Express版本&#xff0c;朋友让我帮忙验证下环境有没有什么问题&#xff0c;软件开发用的框架还是比较老的&#xff0c;spring的xml方式配置&#xff0c;用的c3p0的数据库连接池&#xff0c;启动项目连接池…

如何解决pip安装报错ModuleNotFoundError: No module named ‘datetime’问题

【Python系列Bug修复PyCharm控制台pip install报错】如何解决pip安装报错ModuleNotFoundError: No module named ‘datetime’问题 摘要 在日常Python开发中&#xff0c;我们常常需要通过pip install来安装第三方包&#xff0c;但有时会在PyCharm的控制台里遇到奇怪的ModuleN…

Windows 10 2016 长期服务版

系统介绍 Windows 10 2016 长期服务版。专为需要高度稳定性和最小功能变更的环境设计。它不仅适合专业领域&#xff0c;也是办公环境的理想选择。 系统特点 一、极致的稳定性 精简的系统组件&#xff1a;移除许多现代应用&#xff0c;只保留基础功能。 无强制功能更新&…

基于springboot的文件上传系统:重新定义大文件传输的可靠性边界

一、文件分块上传解析1、为什么传统文件上传已经无法满足现代需求&#xff1f;在云原生时代&#xff0c;文件上传不再是简单的"选择文件-点击上传"的过程。随着视频、设计图、数据集等大文件的普及&#xff0c;传统的单文件上传方式面临着诸多挑战&#xff1a;网络不…

系统学习Python——并发模型和异步编程:进程、线程和GIL

分类目录&#xff1a;《系统学习Python》总目录 在文章《并发模型和异步编程&#xff1a;基础知识》我们简单介绍了Python中的进程、线程和协程。本文就着重介绍Python中的进程、线程和GIL的关系。 Python解释器的每个实例都是一个进程。使用multiprocessing或concurrent.futu…

【playwright篇】教程(十七)[html元素知识]

1 html中&#xff0c;button元素中的aria-describedby"tooltip-r1k"属性&#xff0c;主要用来做什么&#xff1f;在 HTML 中&#xff0c;button 元素中的 aria-describedby"tooltip-r1k" 属性主要用于提升网页的可访问性&#xff08;Accessibility&#xf…

Python: 正则表达式

正则表达式是处理文本数据的强大工具&#xff0c;Python通过re模块提供了完整的正则表达式功能。本文将详细介绍Python正则表达式的使用方法&#xff0c;包括基础语法、高级技巧和re模块API的详细解析。一、正则表达式基础1.1 什么是正则表达式正则表达式(Regular Expression)是…

pytest合并allure报告解决方案

背景 在执行自动化测试的过程中&#xff0c;为了实现自动化的高通过率&#xff0c;可能会反复的重试&#xff0c;直至大多数甚至全部用例执行通过&#xff0c;以此来需要人为分析的用例量&#xff0c;减少人力投入&#xff0c;提高执行效率&#xff1b; 在用例少或者资源消耗小…

Pr插件图文安装教程

Pr插件图文安装教程 Adobe Premiere Pro&#xff0c;简称Pr&#xff0c;是由Adobe公司开发的一款视频编辑软件。Adobe Premiere有较好的兼容性&#xff0c;且可以与Adobe公司推出的其他软件相互协作。这款软件广泛应用于广告制作和电视节目制作中&#xff0c;是视频编辑爱好者…

[netty5: HttpObjectEncoder HttpObjectDecoder]-源码解析

在阅读该篇文章之前&#xff0c;推荐先阅读以下内容&#xff1a; [netty5: HttpObject]-源码解析[netty5: MessageToMessageCodec & MessageToMessageEncoder & MessageToMessageDecoder]-源码分析[netty5: ByteToMessageCodec & MessageToByteEncoder & Byte…

uniapp的navigator跳转功能

接下来&#xff0c;我将围绕一个常见的电商小程序来构建一系列连贯的使用场景。在这个过程中&#xff0c;我们将把 <navigator> 组件的所有关键属性和方法都串联起来&#xff0c;并详细解释它们在每个环节所扮演的角色和作用。 核心场景&#xff1a;构建一个电商小程序的…

v-for的用法及案例

目录 一.v-for的用法 1.举例1 2.举例2 二.购物车案例 1.代码 2.存在的问题&#xff1a;复选框错位 3.解决方案&#xff1a; 赋值给key属性一个唯一的值 一.v-for的用法 1.举例1 <template><view><view v-for"(item,index) in 10" :key"…