OpenCv中也有自带的训练好的猫脸的数据集:
上面2个选中的问价就是训练好的猫脸数据集。具体
路径在D:\OpenCv_3.4.1\opencv\build\etc\haarcascades
里面。
代码:
#include<opencv2/opencv.hpp>
#include<iostream>
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);//转为灰度图
vector<Rect>face_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;
}
运行结果: