使用opencv自带训练好的模型,去你下载opencv的路径下找,路径名应该和我一致。
见代码:
#include<opencv2\opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("D:\\photogallery\\人物\\image_3.png");
resize(img, img, Size(), 0.6, 0.6);
//定义分类器
CascadeClassifier faceCascade;
//加载训练模型
faceCascade.load("D:\\opencv\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");
if (faceCascade.empty())
{
cout << "打开失败" << endl;
}
vector<Rect> faces;
faceCascade.detectMultiScale(img, faces, 1.1, 10);
for (int i = 0; i < faces .size(); i++)
{
// top left bottom right
rectangle(img, faces[i].tl(), faces[i].br(), Scalar(0, 0, 255), 3);
}
imshow("img", img);
waitKey(0);
return 0;
}
运行结果:
你也可以打开你的摄像头,检测一下你脸上饱满的胶原蛋白
见代码:
int main()
{
//Mat img = imread("D:\\photogallery\\人物\\image_3.png");
//resize(img, img, Size(), 0.6, 0.6);
VideoCapture cap(0);
Mat img;
//定义分类器
CascadeClassifier faceCascade;
//加载训练模型
faceCascade.load("D:\\opencv\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");
if (faceCascade.empty())
{
cout << "打开失败" << endl;
}
vector<Rect> faces;
while (true)
{
cap.read(img);
faceCascade.detectMultiScale(img, faces, 1.1, 10);
for (int i = 0; i < faces.size(); i++)
{
// top left bottom right
rectangle(img, faces[i].tl(), faces[i].br(), Scalar(0, 0, 255), 3);
}
imshow("img", img);
waitKey(1);
}
return 0;
}
运行结果如下:
总结:
1.不知道为什么,有些并不模糊图片会识别不出来