当前位置: 首页 > news >正文

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.dtcms.com/a/269063.html

相关文章:

  • day08-Elasticsearch
  • MinIO与SpringBoot集成完整指南
  • maven 发布到中央仓库常用脚本-02
  • 视频序列和射频信号多模态融合算法Fusion-Vital解读
  • 力扣 hot100 Day37
  • C++笔记之和的区别
  • Isaac Lab:让机器人学习更简单的开源框架
  • Go defer(二):从汇编的角度理解延迟调用的实现
  • RAG实战指南 Day 8:PDF、Word和HTML文档解析实战
  • Stirling-PDF 本地化部署,建立自己的专属PDF工具箱
  • 力扣_链表(前后指针)_python版本
  • 虚幻引擎UE5 GAS开发RPG游戏-02 设置英雄角色-18 改成网络多人游戏
  • C++:string类(3)(string类的模拟实现)
  • 批量OCR的GitHub项目
  • Linux 进程控制:全面深入剖析进程创建、终止、替换与等待
  • UI自动化常见面试题
  • qt-C++笔记之QSplitter
  • PyTorch笔记3----------统计学相关函数
  • AI PPT探秘
  • ARMv7单核CPU上SWI(软件中断)验证
  • 策略与工厂的演进:打造工业级Spring路由框架
  • window显示驱动开发—X 通道解释
  • 如何远程管理Linux服务器
  • Rust 内存结构:深入解析
  • DPDK 网络驱动 之 UIO
  • 如何使用 Renode(快速入门)
  • 二进制安全-汇编语言-03-寄存器(内存访问)
  • cuda编程笔记(6)--流
  • PowerQuery逆透视之二维表转一维表
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ContentPlaceholder(背景占位)