c++ dlib19 使用dlib_face_recognition_resnet_model_v1模型 用 resnet 例子
时间: 2023-08-09 15:10:10 浏览: 147
dlib-face-recognition-resnet-model-v1.dat.zip
使用dlib进行人脸识别可以使用dlib_face_recognition_resnet_model_v1模型,以下是一个简单的示例代码:
```c++
#include <iostream>
#include <dlib/opencv.h>
#include <dlib/image_processing/frontal_face_detector.h>
#include <dlib/image_processing.h>
#include <dlib/gui_widgets.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace dlib;
using namespace std;
int main()
{
// 初始化人脸检测器和人脸特征提取器
frontal_face_detector detector = get_frontal_face_detector();
shape_predictor sp;
deserialize("shape_predictor_68_face_landmarks.dat") >> sp;
// 加载人脸识别模型
anet_type net;
deserialize("dlib_face_recognition_resnet_model_v1.dat") >> net;
// 加载待识别的图像
cv::Mat img = cv::imread("test.jpg");
// 将图像转换为dlib的图像格式
cv_image<bgr_pixel> cimg(img);
// 人脸检测
std::vector<rectangle> faces = detector(cimg);
// 人脸特征提取
std::vector<matrix<float,0,1>> face_descriptors;
for (unsigned long i = 0; i < faces.size(); ++i)
{
full_object_detection shape = sp(cimg, faces[i]);
matrix<rgb_pixel> face_chip;
extract_image_chip(cimg, get_face_chip_details(shape,150,0.25), face_chip);
face_descriptors.push_back(net(face_chip));
}
// 输出人脸特征
for (unsigned long i = 0; i < face_descriptors.size(); ++i)
cout << "face descriptor " << i << ": " << trans(face_descriptors[i]) << endl;
return 0;
}
```
其中,需要下载预训练模型文件`shape_predictor_68_face_landmarks.dat`和`dlib_face_recognition_resnet_model_v1.dat`,并放置在代码所在目录下。
阅读全文