#include
#include
using namespace std;
using namespace cv;
String CatFace_fileName = "haarcascade_frontalcatface_extended.xml";//猫脸级联分类器
String Cat_fileName = "haarcascade_frontalcatface.xml";//猫脸级联分类器
CascadeClassifier CatFace_cascade;
int main(int argc, char** argv)
{
if (!CatFace_cascade.load(Cat_fileName))
{
printf("could not load image...\n");
return -1;
}
Mat src = imread("../cat.jpg");//读取小猫图片
if (src.empty())
{
cout << "could not load image..." << endl;
return -1;
}
//namedWindow("src", WINDOW_AUTOSIZE);
//imshow("src", src);
Mat gray;
vector cat_face;
cvtColor(src, gray, COLOR_BGR2GRAY);
equalizeHist(gray, gray);
CatFace_cascade.detectMultiScale(gray, cat_face, 1.1, 3, 0, Size(30,30));
for (size_t i = 0; i < cat_face.size(); i++)
{
//画圆形
Point center(cat_face[i].x + cat_face[i].width*0.5, cat_face[i].y + cat_face[i].height*0.5);
ellipse(src, center, Size(cat_face[i].width*0.5, cat_face[i].height*0.5), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0);
}
imshow("猫脸检测", src);
waitKey(0);
return 0;
}
src为:(图源网络)
输出结果: