| | |
| | | |
| | | #include <basic/debug/Debug.h> |
| | | #include "VptDetectWrapper.h" |
| | | #include <basic/timer_counter/Clocktimer.h> |
| | | |
| | | VptDetectWrapper::VptDetectWrapper() { |
| | | init(); |
| | |
| | | } |
| | | |
| | | list<VptDetectResults> VptDetectWrapper::process_image(cv::Mat &_img) { |
| | | ClockTimer ct("VptDetectWrapper::process_image"); |
| | | m_results.clear(); |
| | | |
| | | sy_img img; |
| | |
| | | int colorIndex = result.info[i].obj_index; |
| | | |
| | | if (colorIndex < 0 || colorIndex >= 9)continue; |
| | | if(colorIndex==4) DBG("detect a car, score =" << result.info[i].obj_score); |
| | | // sprintf(str_i, "%s:%.2f", type[colorIndex].c_str(), result.info[i].obj_score); |
| | | |
| | | // rectangle(process_image, |
| | |
| | | delete[] result.info; |
| | | result.info = NULL; |
| | | } |
| | | DBG(m_results.size()); |
| | | // DBG(m_results.size()); |
| | | return m_results; |
| | | } |
| | | |
| | |
| | | auto &carRes = vptDetectResults.vptDetectRes.carDetectRes; |
| | | |
| | | // 车颜色 |
| | | carRes.colorLabel = static_cast<ColorLabel>(cur_res->vc_res.res_index); |
| | | carRes.colorLabelProb = cur_res->vc_res.res_prob; |
| | | if(m_param.vehicle_color_config == SY_CONFIG_OPEN) { |
| | | carRes.colorLabel = static_cast<ColorLabel>(cur_res->vc_res.res_index); |
| | | carRes.colorLabelProb = cur_res->vc_res.res_prob; |
| | | } |
| | | |
| | | // 车型识别 |
| | | if (cur_res->vr_res.vehicle_brand != NULL) { |
| | | cout << " 车辆品牌 - " << cur_res->vr_res.vehicle_brand << endl; |
| | | carRes.vehicle_brand = cur_res->vr_res.vehicle_brand; |
| | | if(m_param.vehicle_recg_config == SY_CONFIG_OPEN) { |
| | | if (cur_res->vr_res.vehicle_brand != NULL) { |
| | | cout << " 车辆品牌 - " << cur_res->vr_res.vehicle_brand << endl; |
| | | carRes.vehicle_brand = cur_res->vr_res.vehicle_brand; |
| | | // carRes.vehicle_brand = string(cur_res->vr_res.vehicle_brand); |
| | | // carRes.vehicle_brand = "发"; |
| | | delete[] cur_res->vr_res.vehicle_brand; |
| | | cur_res->vr_res.vehicle_brand = NULL; |
| | | } |
| | | if (cur_res->vr_res.vehicle_subbrand != NULL) { |
| | | cout << " 车辆子品牌 - " << cur_res->vr_res.vehicle_subbrand << endl; |
| | | carRes.vehicle_subbrand = cur_res->vr_res.vehicle_subbrand; |
| | | // carRes.vehicle_subbrand = cur_res->vr_res.vehicle_subbrand; |
| | | delete[] cur_res->vr_res.vehicle_subbrand; |
| | | cur_res->vr_res.vehicle_subbrand = NULL; |
| | | } |
| | | if (cur_res->vr_res.vehicle_issue_year != NULL) { |
| | | cout << " 车辆年款 - " << cur_res->vr_res.vehicle_issue_year << endl; |
| | | carRes.vehicle_issue_year = cur_res->vr_res.vehicle_issue_year; |
| | | delete[] cur_res->vr_res.vehicle_issue_year; |
| | | cur_res->vr_res.vehicle_issue_year = NULL; |
| | | } |
| | | if (cur_res->vr_res.vehicle_type != NULL) { |
| | | cout << " 车辆类型 - " << cur_res->vr_res.vehicle_type << endl; |
| | | carRes.vehicle_type = cur_res->vr_res.vehicle_type; |
| | | delete[] cur_res->vr_res.vehicle_type; |
| | | cur_res->vr_res.vehicle_type = NULL; |
| | | } |
| | | if (cur_res->vr_res.freight_ton != NULL) { |
| | | cout << " 货车吨级 - " << cur_res->vr_res.freight_ton << endl; |
| | | carRes.freight_ton = cur_res->vr_res.freight_ton; |
| | | delete[] cur_res->vr_res.freight_ton; |
| | | cur_res->vr_res.freight_ton = NULL; |
| | | } |
| | | // cout << " " << cur_res->vr_res.name_score << endl; |
| | | carRes.vehicle_score = cur_res->vr_res.name_score; |
| | | |
| | | // 车牌 |
| | | if (cur_res->vp_res.rect.height_ != 0 && cur_res->vp_res.rect.width_ != 0) { |
| | | cout << "车牌位置: " << cur_res->vp_res.rect.left_ << " " << cur_res->vp_res.rect.top_ << " " |
| | | << cur_res->vp_res.rect.width_ << " " << cur_res->vp_res.rect.height_ << endl; |
| | | carRes.carPlateRect.setRect(cur_res->vp_res.rect.left_, cur_res->vp_res.rect.top_, |
| | | cur_res->vp_res.rect.width_, cur_res->vp_res.rect.height_); |
| | | carRes.carPlateRectScore = cur_res->vp_res.detectScore; |
| | | std::string _carPlate; |
| | | for (int m = 0; m < 7; m++) { |
| | | printf("%s", cur_res->vp_res.recg[m].character); |
| | | _carPlate.append(cur_res->vp_res.recg[m].character); |
| | | delete[] cur_res->vr_res.vehicle_brand; |
| | | cur_res->vr_res.vehicle_brand = NULL; |
| | | } |
| | | carRes.carPlate = const_cast<char *>(_carPlate.c_str()); |
| | | carRes.carPlateRectScore = cur_res->vp_res.numScore; |
| | | carRes.carPlatetype = cur_res->vp_res.type; |
| | | if (cur_res->vr_res.vehicle_subbrand != NULL) { |
| | | cout << " 车辆子品牌 - " << cur_res->vr_res.vehicle_subbrand << endl; |
| | | carRes.vehicle_subbrand = cur_res->vr_res.vehicle_subbrand; |
| | | // carRes.vehicle_subbrand = cur_res->vr_res.vehicle_subbrand; |
| | | delete[] cur_res->vr_res.vehicle_subbrand; |
| | | cur_res->vr_res.vehicle_subbrand = NULL; |
| | | } |
| | | if (cur_res->vr_res.vehicle_issue_year != NULL) { |
| | | cout << " 车辆年款 - " << cur_res->vr_res.vehicle_issue_year << endl; |
| | | carRes.vehicle_issue_year = cur_res->vr_res.vehicle_issue_year; |
| | | delete[] cur_res->vr_res.vehicle_issue_year; |
| | | cur_res->vr_res.vehicle_issue_year = NULL; |
| | | } |
| | | if (cur_res->vr_res.vehicle_type != NULL) { |
| | | cout << " 车辆类型 - " << cur_res->vr_res.vehicle_type << endl; |
| | | carRes.vehicle_type = cur_res->vr_res.vehicle_type; |
| | | delete[] cur_res->vr_res.vehicle_type; |
| | | cur_res->vr_res.vehicle_type = NULL; |
| | | } |
| | | if (cur_res->vr_res.freight_ton != NULL) { |
| | | cout << " 货车吨级 - " << cur_res->vr_res.freight_ton << endl; |
| | | carRes.freight_ton = cur_res->vr_res.freight_ton; |
| | | delete[] cur_res->vr_res.freight_ton; |
| | | cur_res->vr_res.freight_ton = NULL; |
| | | } |
| | | // cout << " " << cur_res->vr_res.name_score << endl; |
| | | carRes.vehicle_score = cur_res->vr_res.name_score; |
| | | } |
| | | |
| | | if(m_param.vehicle_pendant_det_recg_config == SY_CONFIG_OPEN) { |
| | | // 车牌 |
| | | if (cur_res->vp_res.rect.height_ != 0 && cur_res->vp_res.rect.width_ != 0) { |
| | | cout << "车牌位置: " << cur_res->vp_res.rect.left_ << " " << cur_res->vp_res.rect.top_ << " " |
| | | << cur_res->vp_res.rect.width_ << " " << cur_res->vp_res.rect.height_ << endl; |
| | | carRes.carPlateRect.setRect(cur_res->vp_res.rect.left_, cur_res->vp_res.rect.top_, |
| | | cur_res->vp_res.rect.width_, cur_res->vp_res.rect.height_); |
| | | carRes.carPlateRectScore = cur_res->vp_res.detectScore; |
| | | std::string _carPlate; |
| | | for (int m = 0; m < 7; m++) { |
| | | printf("%s", cur_res->vp_res.recg[m].character); |
| | | _carPlate.append(cur_res->vp_res.recg[m].character); |
| | | } |
| | | carRes.carPlate = const_cast<char *>(_carPlate.c_str()); |
| | | carRes.carPlateRectScore = cur_res->vp_res.numScore; |
| | | carRes.carPlatetype = cur_res->vp_res.type; |
| | | // printf(" numScore = %.2f, detectScore = %.2f\n", cur_res->vp_res.numScore, cur_res->vp_res.detectScore); |
| | | } |
| | | }; |