Cascade级联分类器是一种快速简单的分类方法,opencv2和opencv3中提供了完整的cascade分类器的训练和检测方法,本篇主要介绍下级联分类器的检测方法。
opencv中用于级联分类的类是cv::CascadeClassifier,下面以人脸识别为例,简单介绍下这个类的使用方法。
代码如下:
//定义级联分类器
cv::CascadeClassifier face_detector;
//加在分类器
face_detector.load("haarcascade_frontalface_default.xml");
//判断分类器是否加载成功
if (face_detector.empty())
{
std::cerr << "load detector failed!!!" << std::endl;
return;
}
//获取训练集的原始尺寸,作为分类器的最小尺寸,这样能得到最佳的检测效果(不是必须的)
cv::Size original_size = face_detector.getOriginalWindowSize();
cv::Mat image = cv::imread("image.png", cv::IMREAD_COLOR);
cv::Mat image_gray;
cv::cvtColor(image, image_gray, cv::COLOR_BGR2GRAY);
//用于保存检测到的目标窗口
std::vector<cv::Rect>