openCV 人形检测
运行效果:
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 加载Haar级联检测器
CascadeClassifier detector;
detector.load("haarcascade_fullbody.xml");
// 打开视频文件
cv::VideoCapture cap(0);
if (!cap.isOpened()) {
return -1;
}
while (true) {
// 读取视频帧
Mat frame;
cap.read(frame);
if (frame.empty()) {
break;
}
// 预处理图像
Mat gray;
cvtColor(frame, gray,
COLOR_BGR2GRAY
);
equalizeHist(gray, gray);
// 进行人形检测
std::vector<Rect> detections;
detector.detectMultiScale(gray, detections, 1.1, 3, 0, Size(30, 30));
// 标记检测到的人形
for (const auto& detection : detections) {
rectangle(frame, detection, Scalar(0, 0, 255), 2);
}
// 显示帧
imshow("Frame", frame);
// 按下ESC键退出
if (waitKey(1) == 27) {
break;
}
}
return 0;
}