用opencv和VS实现人脸识别代码
时间: 2023-11-19 12:00:35 浏览: 32
好的,下面是实现人脸识别的代码:
1.引入opencv库和头文件:
```c++
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/face.hpp>
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
```
2.定义人脸检测器和识别器:
```c++
cv::CascadeClassifier face_detector("路径/haarcascade_frontalface_alt.xml");
cv::Ptr<cv::face::FaceRecognizer> face_recognizer;
face_recognizer = cv::face::LBPHFaceRecognizer::create();
```
3.加载训练好的模型:
```c++
face_recognizer->read("路径/模型名称.xml");
```
4.读入测试图片:
```c++
cv::Mat test_image = cv::imread("路径/测试图片.jpg", cv::IMREAD_GRAYSCALE);
```
5.检测人脸并进行识别:
```c++
std::vector<cv::Rect> faces;
face_detector.detectMultiScale(test_image, faces);
for (int i = 0; i < faces.size(); i++)
{
cv::Rect face = faces[i];
cv::Mat face_roi = test_image(face);
cv::resize(face_roi, face_roi, cv::Size(100, 100));
int predicted_label = -1;
double predicted_confidence = 0.0;
face_recognizer->predict(face_roi, predicted_label, predicted_confidence);
std::cout << "Predicted label = " << predicted_label << "\tConfidence = " << predicted_confidence << std::endl;
cv::rectangle(test_image, face, cv::Scalar(255, 0, 0), 2);
cv::putText(test_image, "Person " + std::to_string(predicted_label), cv::Point(face.x, face.y - 10), cv::FONT_HERSHEY_PLAIN, 1, cv::Scalar(0, 255, 0), 2);
}
```
6.显示结果:
```c++
cv::imshow("Test Image", test_image);
cv::waitKey(0);
```
希望这份代码可以帮到你。