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

人脸特征68点识别 C++

1、加载一张图片
main函数:

	cv::Mat img = cv::imread("5.jpg");vector<Point2f> points_vec = dectectFace68(img);

请添加图片描述

2、人脸68特征识别函数

在这里vector<Point2f> dectectFace68(Mat src)
{vector<Point2f> points_vec;int* pResults = NULL;//在检测函数中使用了pBuffer。  //如果你调用多个线程中的函数,请为每个线程创建一个缓冲区!  unsigned char* pBuffer = (unsigned char*)malloc(DETECT_BUFFER_SIZE);if (!pBuffer){fprintf(stderr, "Can not alloc buffer.\n");//return 100;}Mat gray;cvtColor(src, gray, CV_BGR2GRAY);int doLandmark = 1;// do landmark detection  pResults = facedetect_multiview_reinforce(pBuffer, (unsigned char*)(gray.ptr(0)), gray.cols, gray.rows, (int)gray.step,1.2f, 2, 48, 0, doLandmark);int cxa = *pResults;ofstream file("facedata.txt", ios::out);//打印检测结果 if (0 == cxa){}else{for (int i = 0; i < (pResults ? *pResults : 0); i++){short* p = ((short*)(pResults + 1)) + 142 * i;//rectangle(src, Rect(p[0], p[1], p[2], p[3]), Scalar(0, 255, 0), 2);if (doLandmark){for (int j = 0; j < 68; j++){char c[8];_itoa(j, c, 10);Point2f ff(p[6 + 2 * j], p[6 + 2 * j + 1]);points_vec.push_back(ff);file << ff.x << "\t" << ff.y << endl;/*	circle(src, Point((int)p[6 + 2 * j], (int)p[6 + 2 * j + 1]), 3, Scalar(0, 0, 255), 3);CvPoint font;putText(src, c, Point((int)p[6 + 2 * j], (int)p[6 + 2 * j + 1]), FONT_HERSHEY_SIMPLEX, 0.5, Scalar(255, 23, 0), 1);*/}}}}return points_vec;
}插入代码片

3、结果
请添加图片描述

相关文章:

  • 哪吒汽车,正在等待“太乙真人”的拯救
  • 监听 web 容器内的网络请求
  • vCenter VXR01405C ALARM Certificate is about to expire
  • 【python】scikit-learn安装失败No matching distribution found for scikit-learn
  • 【数据库原理】总结(期末版)
  • 机器学习 C++ 的opencv实现SVM图像二分类的训练 (二)【附源码】
  • 我在高职教STM32——GPIO入门之按键输入(1)
  • .net core 的缓存方案
  • 特别有用!配置Overall_Elapsed后,大大提升您使用fiddler的工作效率!
  • 【Python爬虫】Python爬取喜马拉雅,爬虫教程!
  • Golang | Leetcode Golang题解之第204题计数质数
  • 2024年6月总结及随笔之打卡网红点
  • 2023年下半年软考网络规划设计师论文真题
  • HSRP热备份路由协议(VRRP虚拟路由冗余协议)配置以及实现负载均衡
  • 揭秘BERT背后的魔力:语义相似度算法深度剖析
  • 【译】JS基础算法脚本:字符串结尾
  • 【React系列】如何构建React应用程序
  • Angular 2 DI - IoC DI - 1
  • axios 和 cookie 的那些事
  • Electron入门介绍
  • JavaScript服务器推送技术之 WebSocket
  • Redis的resp协议
  • 包装类对象
  • 构建工具 - 收藏集 - 掘金
  • 使用Gradle第一次构建Java程序
  • 微信小程序设置上一页数据
  • 问题之ssh中Host key verification failed的解决
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • MyCAT水平分库
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #git 撤消对文件的更改
  • (3)STL算法之搜索
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (solr系列:一)使用tomcat部署solr服务
  • (待修改)PyG安装步骤
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • ******之网络***——物理***
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core 通过 Ef Core 操作 Mysql
  • .Net MVC + EF搭建学生管理系统
  • .net反混淆脱壳工具de4dot的使用
  • .Net接口调试与案例
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @font-face 用字体画图标
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [C#]科学计数法(scientific notation)显示为正常数字
  • [Dxperience.8.*]报表预览控件PrintControl设置
  • [HDOJ4911]Inversion
  • [HTTP]HTTP协议的状态码