opencv人脸识别c++
时间: 2023-05-26 21:05:51 浏览: 145
opencv 人脸识别 C++实现
Opencv是一个开源的计算机视觉库,提供了许多视觉处理的功能,其中包括人脸识别。下面是一个使用Opencv进行人脸识别的C语言示例代码:
```c
#include <stdlib.h>
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{
CascadeClassifier face_cascade;
Mat frame, gray;
// 加载人脸级联分类器
if (!face_cascade.load("haarcascade_frontalface_alt.xml"))
{
printf("Error loading face cascade.\n");
return -1;
}
// 打开摄像头
VideoCapture cap(0);
if (!cap.isOpened())
{
printf("Error opening video capture.\n");
return -1;
}
namedWindow("Face Detection", WINDOW_NORMAL);
while (true)
{
// 读取帧
if (!cap.read(frame))
{
printf("Error reading frame.\n");
break;
}
// 转换为灰度图像
cvtColor(frame, gray, COLOR_BGR2GRAY);
// 人脸检测
std::vector<Rect> faces;
face_cascade.detectMultiScale(gray, faces, 1.3, 5);
// 绘制检测框
for (size_t i = 0; i < faces.size(); i++)
{
rectangle(frame, faces[i], Scalar(0, 255, 0), 2);
}
// 显示结果
imshow("Face Detection", frame);
// 按ESC键退出
if (waitKey(30) == 27)
{
break;
}
}
// 释放内存
cap.release();
destroyAllWindows();
return 0;
}
```
上面的代码中使用了OpenCV自带的级联分类器来检测人脸,通过调用CascadeClassifier类并加载haarcascade_frontalface_alt.xml文件来实现。同时,还需要使用VideoCapture类来读取摄像头捕获的帧并进行灰度转换,最后在图像上绘制检测到的人脸,并在窗口中显示结果。
阅读全文