写一个用C++和OpenCV进行读取摄像头视频并进行人脸识别。
时间: 2024-04-16 07:28:45 浏览: 147
基于OpenCV读取摄像头的人脸检测和识别
5星 · 资源好评率100%
当然,下面是一个简单的示例代码,演示了如何使用C++和OpenCV读取摄像头视频并进行人脸识别:
```cpp
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/objdetect.hpp>
int main()
{
cv::VideoCapture cap(0); // 打开默认摄像头
if (!cap.isOpened()) // 检查摄像头是否成功打开
{
std::cout << "无法打开摄像头!" << std::endl;
return -1;
}
cv::CascadeClassifier face_cascade; // 创建人脸分类器
if (!face_cascade.load("haarcascade_frontalface_default.xml")) // 加载人脸分类器模型
{
std::cout << "无法加载人脸分类器模型!" << std::endl;
return -1;
}
cv::Mat frame;
cv::namedWindow("人脸识别"); // 创建窗口
while (true)
{
cap >> frame; // 从摄像头读取帧
if (frame.empty()) // 检查帧是否为空
break;
cv::Mat gray;
cv::cvtColor(frame, gray, cv::COLOR_BGR2GRAY); // 将帧转换为灰度图像
std::vector<cv::Rect> faces;
face_cascade.detectMultiScale(gray, faces, 1.1, 4); // 检测人脸
for (const auto &face : faces)
{
cv::rectangle(frame, face, cv::Scalar(0, 255, 0), 2); // 绘制人脸矩形框
}
cv::imshow("人脸识别", frame); // 显示帧
if (cv::waitKey(1) == 'q') // 按下 'q' 键退出循环
break;
}
cap.release(); // 释放摄像头
cv::destroyAllWindows(); // 关闭窗口
return 0;
}
```
请确保在运行代码之前已经安装了OpenCV,并且将文件"haarcascade_frontalface_default.xml"放置在与代码文件相同的目录中。这个XML文件包含了用于人脸检测的分类器模型。
希望这个示例能帮到你!
阅读全文