opencv 人脸检测 c++实现
时间: 2024-01-24 19:15:27 浏览: 35
以下是使用OpenCV进行人脸检测的C++实现的示例代码:
```cpp
#include <opencv2/opencv.hpp>
int main()
{
// 加载人脸检测器
cv::CascadeClassifier faceCascade;
faceCascade.load("haarcascade_frontalface_default.xml");
// 打开摄像头
cv::VideoCapture capture(0);
if (!capture.isOpened())
{
std::cout << "无法打开摄像头" << std::endl;
return -1;
}
cv::Mat frame;
while (true)
{
// 读取当前帧
capture.read(frame);
// 将当前帧转换为灰度图像
cv::Mat gray;
cv::cvtColor(frame, gray, cv::COLOR_BGR2GRAY);
// 检测人脸
std::vector<cv::Rect> faces;
faceCascade.detectMultiScale(gray, faces, 1.1, 3, 0, cv::Size(30, 30));
// 在图像上绘制人脸矩形框
for (const auto& face : faces)
{
cv::rectangle(frame, face, cv::Scalar(0, 255, 0), 2);
}
// 显示结果
cv::imshow("人脸检测", frame);
// 按下ESC键退出循环
if (cv::waitKey(1) == 27)
{
break;
}
}
// 释放摄像头和窗口
capture.release();
cv::destroyAllWindows();
return 0;
}
```
请注意,上述代码假设您已经下载了名为"haarcascade_frontalface_default.xml"的人脸检测器文件,并将其放置在与您的C++源代码文件相同的目录中。您可以从OpenCV官方网站或其他来源获取此文件。