1 #include <opencv2/opencv.hpp>
2 #include <opencv2/dnn.hpp>
3 #include <iostream>
4
5 using namespace cv;
6 using namespace cv::dnn;
7 using namespace std;
8 //人脸检测文件
9 String haar_file = "D:/opencv3.3/opencv/build/etc/haarcascades/haarcascade_frontalface_alt_tree.xml";
10 //年龄预测模型
11 String age_model = "D:/opencv3.3/opencv/sources/samples/data/dnn/age_netaffemodel";
12 //年龄描述文件
13 String age_text = "D:/opencv3.3/opencv/sources/samples/data/dnn/deploy_age.prototxt";
14
15 //性别预测模型
16 String gender_model = "D:/opencv3.3/opencv/sources/samples/data/dnn/gender_netaffemodel";
17 //年龄描述文件
18 String gender_text = "D:/opencv3.3/opencv/sources/samples/data/dnn/deploy_gender.prototxt";
19
20 void predict_age(Net &net, Mat &image);//预测年龄
21 void predict_gender(Net &net, Mat &image);//预测性别
22 int main(int argc, char** argv)
28 namedWindow("input", CV_WINDOW_AUTOSIZE);
29 imshow("input", src);
30 CascadeClassifier detector;
31 detector.load(haar_file);//人脸检测
32 vector<Rect> faces;
33 Mat gray;
34 cvtColor(src, gray, COLOR_BGR2GRAY);
35 detector.detectMultiScale(gray, faces, 1.02, 1, 0, Size(40, 40), Size(200, 200));
36 //加载网络
37 Net age_net = readNetFrCaffe(age_text, age_model);
38 Net gender_net = readNetFrCaffe(gender_text, gender_model);
39
40 for (size_t t= 0; t < faces.size(); t++)
47 imshow("agegenderpredictiondemo", src);
48
49 waitKey(0);
50 return 0;
51 }
52
53 vector<String> ageLabels()
65
66 void predict_age(Net &net, Mat &image)
81
82 void predict_gender(Net &net, Mat &image)
上一篇:C++快速入门 第七讲:复杂的数据类型
下一篇:C++快速入门 第八讲:复杂的数据类型——指针
OpenCV









