#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
using namespace cv;
CascadeClassifier face_cascade;
CascadeClassifier eye_cascade;
// 人眼检测
int detectEye(cv::Mat& im, cv::Mat& tpl, cv::Rect& rect)
{
std::vector<cv::Rect> faces, eyes;
// 多尺度人脸检测
face_cascade.detectMultiScale(im, faces,
1.1, 2, 0|CV_HAAR_SCALE_IMAGE, cv::Size(30,30));
// 遍历人脸检测结果查找人眼目标
for (int i = 0; i < faces.size(); i++)
{
cv::Mat face = im(faces[i]);
// 多尺度人眼检测
eye_cascade.detectMultiScale(face, eyes,
1.1, 2, 0|CV_HAAR_SCALE_IMAGE, cv::Size(20,20));
// 人眼检测区域输出
if (eyes.size())
{
rect = eyes[0] + cv::Point(faces[i].x, faces[i].y);
tpl = im(rect);
}
}
return eyes.size();
}
// 人眼跟踪
void trackEye(cv::Mat& im, cv::Mat& tpl, cv::Rect& rect)
{
// 人眼位置
cv::Size pSize(rect.width * 2, rect.height * 2);
// 矩形区域
cv::Rect tRect(rect + pSize -
cv::Point(
opencv-人眼检测,人眼跟踪
最新推荐文章于 2024-04-13 19:40:33 发布
该博客介绍如何利用OpenCV库,在实时视频或摄像头流中进行人眼检测和跟踪,主要依赖OpenCV自带的xml文件进行特征识别。
摘要由CSDN通过智能技术生成