pansen
2019-04-10 ecb47d89dcb2b1d8e4be9b6cb0a84d8b49e2e3cc
QiaoJiaSystem/VptServer/VptDetectWrapper.cpp
@@ -31,7 +31,7 @@
    vpt_pic_init(&m_handle, m_param);
}
void VptDetectWrapper::process_image(cv::Mat &_img) {
list<VptDetectResults> VptDetectWrapper::process_image(cv::Mat &_img) {
    m_results.clear();
    sy_img img;
@@ -70,12 +70,24 @@
                                             result.info[i].obj_rect.width_, result.info[i].obj_rect.height_);
        } else {}
    }
    //release source
    if (result.info != NULL) {
        for (int i = 0; i < MAX_DET_COUNT; i++) {
            if (result.info[i].analysis_res != NULL) {
                delete result.info[i].analysis_res;
                result.info[i].analysis_res = NULL;
            }
        }
        delete[] result.info;
        result.info = NULL;
    }
    DBG(m_results.size());
    return m_results;
}
VptDetectResults VptDetectWrapper::changeAnalysisRes(int index, void *result) {
    VptDetectResults vptDetectResults;
    VptDetectResults vptDetectResults(index);
    vptDetectResults.sdkDetectType = static_cast<SDKDetectType>(index);
//    vptDetectResults.vptDetectRes.carDetectRes;
    switch (vptDetectResults.sdkDetectType) {
@@ -87,7 +99,7 @@
            for (int i = 0; i < HP_FIR_INDEX_SIZE; i++) {
                int resIndex = vptDetectResults.vptDetectRes.personDetectRes.res_objs[i].res_index;
                cout << vptDetectResults.vptDetectRes.personDetectRes.res_objs[i].res_prob << "  ";
                cout << HpResStr[i][resIndex] << " " << endl;
                cout << HpResStr[i][resIndex] << " ";
            }
            //test code end
        };
@@ -97,12 +109,14 @@
            hcp_res *cur_res = (hcp_res *) result;
            memcpy(vptDetectResults.vptDetectRes.perRideCarDetectRes.res_objs, cur_res->res_objs,
                   sizeof(classfy_boj_res) * HCP_FIR_INDEX_SIZE);
            //test code
            for (int i = 0; i < HCP_FIR_INDEX_SIZE; i++) {
                int resIndex = vptDetectResults.vptDetectRes.perRideCarDetectRes.res_objs[i].res_index;
                cout << vptDetectResults.vptDetectRes.perRideCarDetectRes.res_objs[i].res_prob << "  ";
                cout << HpResStr[i][resIndex] << " " << endl;
                cout << HpResStr[i][resIndex] << " ";
            }
            cout << endl << endl;
            //test code
        };
            break;
        case SDKDetectType::car :
@@ -118,32 +132,35 @@
            // 车型识别
            if (cur_res->vr_res.vehicle_brand != NULL) {
//                cout << "  车辆品牌 - " << cur_res->vr_res.vehicle_brand << endl;
                carRes.vehicle_brand = std::move(string(cur_res->vr_res.vehicle_brand));
                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 = std::move(string(cur_res->vr_res.vehicle_subbrand));
                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 = std::move(string(cur_res->vr_res.vehicle_issue_year));
                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 = std::move(string(cur_res->vr_res.vehicle_type));
                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 = std::move(string(cur_res->vr_res.freight_ton));
                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;
            }
@@ -152,16 +169,17 @@
            // 车牌
            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;
                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);
                    carRes.carPlate.append(cur_res->vp_res.recg[m].character);
                    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);