| | |
| | | {
|
| | | std::vector<bbox_t> result_vec;
|
| | |
|
| | | result_vec = Detector::getInstance()->detect(mat_image); // 静态单例模式,调用单例指针对象进行人体检测
|
| | | result_vec = Detector::getInstance()->detect(mat_image);
|
| | |
|
| | | encoder_features(result_vec, t_result); //将检测的结果转化成指定的格式
|
| | |
|
| | |
| | | // draw_boxes(mat_image, result_vec);
|
| | | }
|
| | |
|
| | | // 将检测结果的result_box信息融合到detections中
|
| | |
|
| | | void DetecterManager::encoder_features(std::vector<bbox_t> boxes, TResult &t_result)
|
| | | {
|
| | | t_result.targets = (Target*)malloc(sizeof(Target) * boxes.size()); // 绘制人脸信息的
|
| | |
| | |
|
| | | int result_index=0;
|
| | |
|
| | | //NMS 去掉重叠的框信息 start
|
| | | std::vector<bbox_t> n_boxes;
|
| | | float threshold = 0.99;
|
| | | // 需要使用迭代器的方式进行擦除
|
| | | for (vector<bbox_t>::iterator it = boxes.begin();it !=boxes.end();)
|
| | | {
|
| | | if(it->obj_id!=0) //将非人体信息转移到n_boxes
|
| | | if(it->obj_id!=0)
|
| | | {
|
| | | n_boxes.push_back(*it);
|
| | | it = boxes.erase(it);
|
| | |
| | | }
|
| | | boxes.erase(boxes.begin());
|
| | | }
|
| | | //NMS 去掉重叠的框信息 end
|
| | |
|
| | |
|
| | | for (const auto &result_box:n_boxes)
|