OpenCV-C++-级联分类器训练与使用(2、猫脸检测)

OpenCv中也有自带的训练好的猫脸的数据集:
OpenCV-C++-级联分类器训练与使用(2、猫脸检测)_第1张图片
上面2个选中的问价就是训练好的猫脸数据集。具体
路径在D:\OpenCv_3.4.1\opencv\build\etc\haarcascades里面。

代码:

#include
#include

using namespace cv;
using namespace std;

//数据集文件路径
String catFileName = "D:/OpenCv_3.4.1/opencv/build/etc/haarcascades/haarcascade_frontalcatface.xml";
CascadeClassifier catclassifier;
int main(int argc, char** argv)
{
	if (!catclassifier.load(catFileName))//读取数据集,未找到,则结束,否则继续后面的操作
	{
		cout << "数据集未加载!" << endl;
		return -1;
	}
	Mat src = imread("D:/test/2cat.jpg");//读进来包含猫脸的图片
	if (src.empty())
	{
		cout << "图片未找到!" << endl;
		return -1;
	}
	Mat gray;
	cvtColor(src, gray, CV_BGR2GRAY);//转为灰度图
	vectorface_cats;//存储猫脸数据
	//在不同尺度空间上计算并检测猫脸
	catclassifier.detectMultiScale(gray, face_cats, 1.1, 3, 0, Size(20, 20));
	//绘制矩形框住猫脸
	for (size_t i = 0; i < face_cats.size(); i++)
	{
		rectangle(src,face_cats[i],Scalar(0, 0, 255), 2, 8, 0);

	}
	imshow("face of cat detect", src);
	waitKey(0);
	return 0;
}

运行结果:
OpenCV-C++-级联分类器训练与使用(2、猫脸检测)_第2张图片

你可能感兴趣的:(OpenCv-C++学习记录)