给我写一个c++函数,传入一个mat,用dlib找出mat中所有人脸的关键点,并存入full_object_detection数组中
时间: 2023-02-12 07:28:52 浏览: 97
face-landmark.rar_68 关键点_facelandmark_landmark face_人脸关键点_人脸标注
5星 · 资源好评率100%
以下是使用 dlib 库在 C 语言中实现的代码示例:
```
#include <dlib/image_processing/frontal_face_detector.h>
#include <dlib/image_processing/shape_predictor.h>
#include <dlib/opencv.h>
using namespace dlib;
using namespace std;
// 声明人脸检测器和人脸关键点预测器
frontal_face_detector detector;
shape_predictor sp;
// 函数:获取人脸关键点
// 输入:mat - 输入图像
// 输出:full_object_detection数组 - 存储人脸关键点的数组
void get_face_keypoints(cv::Mat mat, std::vector<full_object_detection> &face_keypoints) {
// 转换为dlib图像
cv_image<bgr_pixel> cimg(mat);
// 检测人脸
std::vector<rectangle> faces = detector(cimg);
// 遍历每一个检测到的人脸
for (int i = 0; i < faces.size(); i++) {
full_object_detection shape = sp(cimg, faces[i]);
face_keypoints.push_back(shape);
}
}
```
请注意,在使用以上代码前,需要先加载 dlib 的人脸检测模型和人脸关键点预测模型。
阅读全文