用c++怎么做基于opencv的人脸识别
时间: 2023-08-17 21:36:59 浏览: 103
首先,你需要安装OpenCV库。然后,你需要使用OpenCV中的人脸识别模块,这个模块可以通过CascadeClassifier类实现。下面是一个基于OpenCV的人脸识别的示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;
int main()
{
CascadeClassifier face_cascade;
if (!face_cascade.load("haarcascade_frontalface_alt.xml"))
{
printf("Error loading face cascade\n");
return -1;
}
Mat frame, gray_frame;
VideoCapture cap(0);
if (!cap.isOpened())
{
printf("Error opening camera\n");
return -1;
}
namedWindow("Face Detection", WINDOW_AUTOSIZE);
while (true)
{
cap >> frame;
cvtColor(frame, gray_frame, COLOR_BGR2GRAY);
std::vector<Rect> faces;
face_cascade.detectMultiScale(gray_frame, faces, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));
for (size_t i = 0; i < faces.size(); i++)
{
rectangle(frame, faces[i], Scalar(0, 255, 0), 2);
}
imshow("Face Detection", frame);
if (waitKey(30) >= 0) break;
}
return 0;
}
```
这个代码使用了OpenCV中的CascadeClassifier类来加载人脸识别的级联分类器文件,然后从摄像头中读取帧,并用CascadeClassifier类来检测其中的人脸,并用矩形框标出。
阅读全文