MCPcopy Create free account
hub / github.com/OAID/Tengine / main

Function main

examples/caffe_wrapper/mtcnn/test_caffe_mtcnn.cpp:29–93  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27#endif
28
29int main(int argc, char* argv[])
30{
31#ifdef USE_OPENCV
32
33 if(argc < 3)
34 {
35 std::cout << "[usage]: " << argv[0] << " <test.jpg> <model_dir> [save_result.jpg] \n";
36 return 0;
37 }
38 const char* fname = argv[1];
39 std::string model_dir = argv[2];
40 std::string sv_name = "result.jpg";
41 if(argc == 4)
42 sv_name = argv[3];
43
44 cv::Mat frame = cv::imread(fname);
45
46 if(!frame.data)
47 {
48 std::cerr << "failed to read image file: " << fname << std::endl;
49 return 1;
50 }
51
52 std::vector<face_box> face_info;
53 caffe_mtcnn* p_mtcnn = new caffe_mtcnn();
54
55 p_mtcnn->load_model(model_dir);
56
57 unsigned long start_time = get_cur_time();
58
59 p_mtcnn->detect(frame, face_info);
60
61 unsigned long end_time = get_cur_time();
62
63 for(unsigned int i = 0; i < face_info.size(); i++)
64 {
65 face_box& box = face_info[i];
66
67 printf("face %d: x0,y0 %2.5f %2.5f x1,y1 %2.5f %2.5f conf: %2.5f\n", i, box.x0, box.y0, box.x1, box.y1,
68 box.score);
69 printf("landmark: ");
70 for(unsigned int j = 0; j < 5; j++)
71 printf(" (%2.5f %2.5f)", box.landmark.x[j], box.landmark.y[j]);
72 printf("\n");
73
74 /*draw box */
75 cv::rectangle(frame, cv::Point(box.x0, box.y0), cv::Point(box.x1, box.y1), cv::Scalar(0, 255, 0), 1);
76
77 /* draw landmark */
78 for(int l = 0; l < 5; l++)
79 {
80 cv::circle(frame, cv::Point(box.landmark.x[l], box.landmark.y[l]), 1, cv::Scalar(0, 0, 255), 1.8);
81 }
82 }
83
84 cv::imwrite(sv_name, frame);
85 std::cout << "total detected: " << face_info.size() << " faces. used " << (end_time - start_time) << " us"
86 << std::endl;

Callers

nothing calls this directly

Calls 5

imreadFunction · 0.85
load_modelMethod · 0.80
get_cur_timeFunction · 0.70
detectMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected