1. cascade detect人脸识别

2019-11-28  本文已影响0人  楼桑村小秀才

版本: 4.1.0

人脸检测示例代码

CascadeClassifier face_cascade;
face_cascade.load("haarcascade_frontalface_default.xml");

Mat image = imread("face.jpg");
Mat image_gray;

cvtColor(image, image_gray, COLOR_BGR2GRAY);
equalizeHist(image_gray, image_gray);

vector<Rect> faces;
face_cascade.detectMultiScale(image_gray, faces);

for (size_t i = 0; i < faces.size(); i++)
{
    Point center(faces[i].x + faces[i].width / 2, faces[i].y + faces[i].height / 2);
    ellipse(image, center, Size(faces[i].width / 2, faces[i].height / 2), 0, 0, 360, Scalar(255, 0, 255), 4);
}

haarcascade_frontalface_default.xml

位置: sources\data\haarcascades

多尺度检测函数
void detectMultiScale(InputArray image,
                      std::vector<Rect>& objects,
                      double scaleFactor = 1.1,
                      int minNeighbors = 3, int flags = 0,
                      Size minSize = Size(),
                      Size maxSize = Size() );

void detectMultiScale(InputArray image,
                      std::vector<Rect>& objects,
                      std::vector<int>& numDetections,
                      double scaleFactor=1.1,
                      int minNeighbors=3, int flags=0,
                      Size minSize=Size(),
                      Size maxSize=Size() );

void detectMultiScale(InputArray image,
                      std::vector<Rect>& objects,
                      std::vector<int>& rejectLevels,
                      std::vector<double>& levelWeights,
                      double scaleFactor = 1.1,
                      int minNeighbors = 3, int flags = 0,
                      Size minSize = Size(),
                      Size maxSize = Size(),
                      bool outputRejectLevels = false );
参数 默认值 含义
image 输入图像
objects 被检测物体的矩形框向量组
rejectLevels
levelWeights
scaleFactor 1.1 特征图缩放系数
minNeighbors 3
flags 0
minSize 被检测物体的最小尺寸
maxSize 输入图像的尺寸 被检测物体的最大尺寸
outputRejectLevels false
基本原理
积分图

图像是由一系列的离散像素点组成, 图像积分图中每个点的值是原图像中该点左上角的所有像素值之和.

上一篇 下一篇

猜你喜欢

热点阅读