C++实现OpenCV 视频人脸检测
一、环境
IDE:Microsoft Visual Studio 2022
OpenCV:opencv-4.5.5-vc14_vc15 .exe
分类器:haarcascade_frontalface_default.xml
二、OpenCV在C++环境下的配置
参照其他bolg:比如这篇
我在配置的时候遇到过没有找到opencv_world455.dll文件的错误。
通过移动该文件exe文件的目录下(比如我创建了opencv_demo的项目,将dll文件移动到opencv_demo.exe的同级目录下),并重启IDE解决了。
三、代码
#include <opencv2/opencv.hpp>
#include <iostream>
int videoFaceDetect() {
cv::VideoCapture cap(0);//开启摄像头
if (!cap.isOpened()) {
std::cout << "Camera open failed!" << std::endl;
return -1;
}else{
std::cout << "Camera open success!" << std::endl;
}
//加载人脸检测模型
cv::CascadeClassifier face_detetor;
face_detetor.load("D:\\Microsoft Visual Studio\\workspace\\OpenCV_demo\\Classifier\\haarcascade_frontalface_default.xml");//路径写自己存储l
cv::namedWindow("result", cv::WINDOW_FREERATIO);//调整窗口大小
while (true) {
//循环获取摄像头数据
cv::Mat frame;
cap >> frame;
cv::Mat gray;
//转灰度图像
cv::cvtColor(frame,gray, cv::COLOR_BGR2GRAY);
std::vector<cv::Rect> faces;
face_detetor.detectMultiScale(gray, faces, 1.1, 2, 0 | cv::CASCADE_SCALE_IMAGE, cv::Size(30, 30));
//显示结果
for (size_t i = 0; i < faces.size(); ++i) {
cv::rectangle(frame, faces[i], cv::Scalar(0, 0, 255), 2, 8, 0);
}
cv::imshow("result", frame);
cv::waitKey(5);
}
return 0;
}
int main()
{
videoFaceDetect();
return 0;
}