dlib c++ 人脸识别 详细例子, 需要处理多个图像,则需要将图像处理流程封装成函数或类;如果需要实时进行人脸识别,则需要对程序进行优化以提高识别速度。
时间: 2023-12-17 10:02:41 浏览: 70
一个使用 dlib 进行人脸识别的例子
以下是一个简单的基于dlib c++库的人脸识别例子,其中使用了HOG特征和线性SVM分类器:
```c++
#include <iostream>
#include <dlib/opencv.h>
#include <dlib/svm.h>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace dlib;
int main()
{
// 1. 加载训练好的分类器
typedef scan_fhog_pyramid<pyramid_down<6> > image_scanner_type;
object_detector<image_scanner_type> detector;
deserialize("detector.svm") >> detector;
// 2. 加载图片
cv::Mat img = cv::imread("test.jpg");
// 3. 转换为dlib格式的图像
cv_image<bgr_pixel> cimg(img);
// 4. 检测人脸
std::vector<rectangle> dets = detector(cimg);
// 5. 在图片上标记出人脸位置
for (unsigned long i = 0; i < dets.size(); ++i)
{
cv::rectangle(img, cv::Point(dets[i].left(), dets[i].top()), cv::Point(dets[i].right(), dets[i].bottom()), cv::Scalar(0, 0, 255), 2);
}
// 6. 显示图片
cv::imshow("img", img);
cv::waitKey();
return 0;
}
```
需要注意的是,由于dlib并不直接支持opencv格式的图像,因此需要使用`cv_image`将opencv图像转换为dlib图像,这里使用了`cv_image<bgr_pixel>`将BGR格式的图像转换为dlib图像。此外,由于dlib并不提供对图像的加载和显示功能,因此需要使用opencv库进行加载和显示。
阅读全文