当前位置: 首页 > 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.lryc.cn/news/582234.html

相关文章:

  • 虚幻引擎UE5 GAS开发RPG游戏-02 设置英雄角色-18 改成网络多人游戏
  • turborepo 如何解决git管理包过大的问题
  • 5、Receiving Messages:Message Listener Containers
  • Python实现文件夹中文件名与Excel中存在的文件名进行对比,并进行删除操作
  • 【无标题】三维拓扑量子色动力学模型:理论重构与实验验证
  • day16——Java集合进阶(Collection、List、Set)
  • windows安装python环境以及对应编辑器的详细流程
  • 从依赖地狱到依赖天堂PNPM
  • VmWare 安装 mac 虚拟机
  • 大模型在肾囊肿诊疗全流程预测及应用研究报告
  • 【保姆级喂饭教程】Git图形化客户端Sourcetree安装及使用教程
  • Linux系统从入门到精通!第四天(shell编程和Docker)
  • codeforces Round 1021-1030(部分题解)
  • 【Note】《Kafka: The Definitive Guide》第7章 Building Data Pipelines
  • 源哈希(sh)解析
  • etcd-cpp-apiv3 二次封装
  • [学习] C语言数学库函数背后的故事:`double erf(double x)`
  • 【数据分析】R语言基于虚弱指数的心血管疾病风险评估
  • JS实现基础算法与dom的结构
  • Spring MVC HandlerInterceptor 拦截请求及响应体
  • 【Netty高级】Netty的技术内幕
  • token非对称加密
  • AI的出现,是否能替代IT从业者
  • React19 新增Hooks:useOptimistic
  • 系统学习Python——并发模型和异步编程:进程、线程和GIL
  • 量子计算+AI芯片:光子计算如何重构神经网络硬件生态
  • 动手学深度学习13.7. 单发多框检测(SSD)-笔记练习(PyTorch)
  • Android 10 Gnss数据流程
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频质量评估与智能修复(337)
  • uniapp的navigator跳转功能