diff --git a/jni/VehicleNativeInterface.cpp b/jni/VehicleNativeInterface.cpp index b5b17a9..3dd6963 100644 --- a/jni/VehicleNativeInterface.cpp +++ b/jni/VehicleNativeInterface.cpp @@ -14,8 +14,6 @@ #include #include "base64.h" -// #include "curl/curl.h" - //dvpp���� #include "dvpp_process.h" #include "utils.h" @@ -90,9 +88,7 @@ using namespace std; * �������� * */ sy_format getImgByteType(int type); -// size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata); -// //function to retrieve the image as cv::Mat data type -// cv::Mat curlImg(const char *img_url, int timeout); + /** * ȫ�ֱ��� @@ -311,7 +307,7 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI std::cout << "village_pic_analysis " << std::endl; std::vector vec_result = village_pic_analysis(vaHandle, batch_img, batchSize); - if (vec_result.size() <= 0) + if (vec_result.size() <= 0 || vec_result.size() != batchSize) { printf("jni info:village_pic_analysis failed."); return -1; @@ -319,302 +315,291 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI cout << "result size:" << vec_result.size() << endl; t3 = msecond(); - //printf("va jni info:process time: %.2f\n", (t3 - t2)); - - - for (int b = 0; b < batchSize; b++) - { - - //printf("VAJNI_TEST begin reult: %d, count: %d\n", b, result[b].count); - for (int c = 0; c < vec_result[b].info.size(); c++) - { - //std::cout << "obj_quality_idx=" << result[b].info[c].obj_quality_idx << std::endl; //聚档数据类型�?-无效数据�?-低质数据�?-优质数据 - - std::string str_vehicle_type; - int vehicle_type = vec_result[b].info[c].type; - //std::cout << "vehicle_type=" << vehicle_type << std::endl; - if (vehicle_type == 0)str_vehicle_type = "head"; - else if (vehicle_type == 1)str_vehicle_type = "rear"; - else if (vehicle_type == 2)str_vehicle_type = "motor"; - else if (vehicle_type == 3)str_vehicle_type = "tricycle"; - else if (vehicle_type == 4)str_vehicle_type = "body"; - //std::cout << "vehicle_type info:" << str_vehicle_type << std::endl; - } - } - - if (ret == SUCCESS) + std::cout << "struct " << std::endl; + // getClass + jclass cls_vehicleAnalysisResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleAnalysisResultParam"); + jclass cls_VehicleInfo = env->FindClass("com/objecteye/pojo/vehicle/VehicleInfoParam"); + jclass cls_LineInfo = env->FindClass("com/objecteye/pojo/vehicle/LineInfoParam"); + jclass cls_SegInfo = env->FindClass("com/objecteye/pojo/vehicle/SegInfoParam"); + + jclass cls_VehicleDetectResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleDetectResultParam"); + jclass cls_VehicleColorResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleColorResultParam"); + jclass cls_VehicleRecgResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleRecognizeResultParam"); + //jclass cls_VehicleRecgTopnResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleRecognizeResultTopnParam");//wh20210527������topn�ӿ� + jclass cls_VplateResult = env->FindClass("com/objecteye/pojo/vehicle/VehiclePlateResultParam"); + jclass cls_VehiclePendantDetResult = env->FindClass("com/objecteye/pojo/vehicle/VehiclePendantDetectResultParam"); + jclass cls_VehicleIllegalDetResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectResultParam"); + jclass cls_VehicleFeaResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleFeatureResultParam"); + jclass cls_SyRect = env->FindClass("com/objecteye/pojo/common/SyRectParam"); + jclass cls_VplateNum = env->FindClass("com/objecteye/pojo/vehicle/VehiclePlateNumParam"); + jclass cls_VehiclePendantDetInfo = env->FindClass("com/objecteye/pojo/vehicle/VehiclePendantDetectInfoParam"); + jclass cls_VehicleIllegalDetInfo = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam"); + jclass cls_VehicleIllegalDetDetails = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam"); + //jclass cls_VehicleSpecialInformationParam = env->FindClass("com/objecteye/pojo/vehicle/VehicleSpecialInformationParam"); + //jclass cls_VehicleSpecialResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleSpecialResultParam"); + //jclass cls_MucktruckcoverResult = env->FindClass("com/objecteye/pojo/vehicle/MucktruckcoverResultParam"); + jclass cls_MtaResult = env->FindClass("com/objecteye/pojo/vehicle/MtaResultParam"); + jclass cls_MtaDetailsParam = env->FindClass("com/objecteye/pojo/vehicle/MtaDetailsParam"); + //jclass cls_StainVplateResultParam = env->FindClass("com/objecteye/pojo/vehicle/StainVplateResultParam"); + jclass cls_MannedResultParam = env->FindClass("com/objecteye/pojo/vehicle/MannedResultParam"); + + //jclass cls_VehiclePoseResultParam = env->FindClass("com/objecteye/pojo/vehicle/VehiclePoseResultParam");//wh20210601������pose��� + + jclass cls_SyPoint = env->FindClass("com/objecteye/pojo/common/SyPointParam"); + + + //getmethodId + jmethodID mid_vehicleAnalysisResult = env->GetMethodID(cls_vehicleAnalysisResult, "", "([Lcom/objecteye/pojo/vehicle/VehicleInfoParam;[Lcom/objecteye/pojo/vehicle/LineInfoParam;[Lcom/objecteye/pojo/vehicle/SegInfoParam;I)V"); + + jmethodID mid_VehicleInfo = env->GetMethodID(cls_VehicleInfo, "", "(Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;Lcom/objecteye/pojo/vehicle/VehicleColorResultParam;Lcom/objecteye/pojo/vehicle/VehicleRecognizeResultParam;Lcom/objecteye/pojo/vehicle/VehiclePlateResultParam;Lcom/objecteye/pojo/vehicle/VehiclePendantDetectResultParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectResultParam;Lcom/objecteye/pojo/vehicle/VehicleFeatureResultParam;Lcom/objecteye/pojo/vehicle/MtaResultParam;Lcom/objecteye/pojo/vehicle/MannedResultParam;IIIFIIIIIIFII)V"); + + jmethodID mid_VehicleDetectResult = env->GetMethodID(cls_VehicleDetectResult, "", "(Lcom/objecteye/pojo/common/SyRectParam;F)V"); + jmethodID mid_VehicleColorResult = env->GetMethodID(cls_VehicleColorResult, "", "(FI)V"); + //jmethodID mid_VehicleRecgTopnResult = env->GetMethodID(cls_VehicleRecgTopnResult, "", "([Lcom/objecteye/pojo/vehicle/VehicleRecognizeResultParam;I)V");//wh20210527������topn�ӿ� + jmethodID mid_VehicleRecgResult = env->GetMethodID(cls_VehicleRecgResult, "", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;F)V"); + jmethodID mid_VplateResult = env->GetMethodID(cls_VplateResult, "", "(Lcom/objecteye/pojo/common/SyRectParam;F[Lcom/objecteye/pojo/vehicle/VehiclePlateNumParam;FII)V"); + jmethodID mid_VehiclePendantDetResult = env->GetMethodID(cls_VehiclePendantDetResult, "", "([Lcom/objecteye/pojo/vehicle/VehiclePendantDetectInfoParam;I)V"); + jmethodID mid_VehicleIllegalDetResult = env->GetMethodID(cls_VehicleIllegalDetResult, "", "(Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam;)V"); + jmethodID mid_VehicleFeaResult = env->GetMethodID(cls_VehicleFeaResult, "", "([F)V"); + jmethodID mid_SyRect = env->GetMethodID(cls_SyRect, "", "(IIII)V"); + jmethodID mid_VplateNum = env->GetMethodID(cls_VplateNum, "", "(Ljava/lang/String;F)V"); + + + jmethodID mid_VehiclePendantDetInfo = env->GetMethodID(cls_VehiclePendantDetInfo, "", "(Lcom/objecteye/pojo/common/SyRectParam;IFII)V"); + jmethodID mid_VehicleIllegalDetInfo = env->GetMethodID(cls_VehicleIllegalDetInfo, "", "(Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam;)V"); + jmethodID mid_VehicleIllegalDetDetails = env->GetMethodID(cls_VehicleIllegalDetDetails, "", "(IF)V"); + //jmethodID mid_VehicleSpecialInformationParam = env->GetMethodID(cls_VehicleSpecialInformationParam, "", "(FI)V"); + //jmethodID mid_VehicleSpecialResult = env->GetMethodID(cls_VehicleSpecialResult, "", "([Lcom/objecteye/pojo/vehicle/VehicleSpecialInformationParam;I)V"); + jmethodID mid_MtaResult = env->GetMethodID(cls_MtaResult, "", "(Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;)V"); + jmethodID mid_MtaDetailsParam = env->GetMethodID(cls_MtaDetailsParam, "", "(IF)V"); + //jmethodID mid_StainVplateResultParam = env->GetMethodID(cls_StainVplateResultParam, "", "(FI)V"); + //jmethodID mid_MucktruckcoverResult = env->GetMethodID(cls_MucktruckcoverResult, "", "(IF)V"); + jmethodID mid_MannedResult = env->GetMethodID(cls_MannedResultParam, "", "([Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;I)V");//wh20220222 + jmethodID mid_SyPoint = env->GetMethodID(cls_SyPoint, "", "(II)V");//wh20210601������pose��� + //jmethodID mid_VehiclePoseResult = env->GetMethodID(cls_VehiclePoseResultParam, "", "([Lcom/objecteye/pojo/common/SyPointParam;[F[FDDD)V"); + + jmethodID mid_LineInfo = env->GetMethodID(cls_LineInfo, "", "([Lcom/objecteye/pojo/vehicle/SyPointParam;I)V"); + jmethodID mid_SegInfo = env->GetMethodID(cls_SegInfo, "", "([Lcom/objecteye/pojo/vehicle/SyPointParam;I)V"); + + //set value to param + std::cout << "vehicleInfoArray " << std::endl; + + for (size_t i = 0; i < batchSize; i++) { - // getClass - jclass cls_vehicleAnalysisResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleAnalysisResultParam"); - jclass cls_VehicleInfo = env->FindClass("com/objecteye/pojo/vehicle/VehicleInfoParam"); - jclass cls_LineInfo = env->FindClass("com/objecteye/pojo/vehicle/LineInfoParam"); - jclass cls_SegInfo = env->FindClass("com/objecteye/pojo/vehicle/SegInfoParam"); - - jclass cls_VehicleDetectResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleDetectResultParam"); - jclass cls_VehicleColorResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleColorResultParam"); - jclass cls_VehicleRecgResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleRecognizeResultParam"); - //jclass cls_VehicleRecgTopnResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleRecognizeResultTopnParam");//wh20210527������topn�ӿ� - jclass cls_VplateResult = env->FindClass("com/objecteye/pojo/vehicle/VehiclePlateResultParam"); - jclass cls_VehiclePendantDetResult = env->FindClass("com/objecteye/pojo/vehicle/VehiclePendantDetectResultParam"); - jclass cls_VehicleIllegalDetResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectResultParam"); - jclass cls_VehicleFeaResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleFeatureResultParam"); - jclass cls_SyRect = env->FindClass("com/objecteye/pojo/common/SyRectParam"); - jclass cls_VplateNum = env->FindClass("com/objecteye/pojo/vehicle/VehiclePlateNumParam"); - jclass cls_VehiclePendantDetInfo = env->FindClass("com/objecteye/pojo/vehicle/VehiclePendantDetectInfoParam"); - jclass cls_VehicleIllegalDetInfo = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam"); - jclass cls_VehicleIllegalDetDetails = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam"); - //jclass cls_VehicleSpecialInformationParam = env->FindClass("com/objecteye/pojo/vehicle/VehicleSpecialInformationParam"); - //jclass cls_VehicleSpecialResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleSpecialResultParam"); - //jclass cls_MucktruckcoverResult = env->FindClass("com/objecteye/pojo/vehicle/MucktruckcoverResultParam"); - jclass cls_MtaResult = env->FindClass("com/objecteye/pojo/vehicle/MtaResultParam"); - jclass cls_MtaDetailsParam = env->FindClass("com/objecteye/pojo/vehicle/MtaDetailsParam"); - //jclass cls_StainVplateResultParam = env->FindClass("com/objecteye/pojo/vehicle/StainVplateResultParam"); - jclass cls_MannedResultParam = env->FindClass("com/objecteye/pojo/vehicle/MannedResultParam"); - - //jclass cls_VehiclePoseResultParam = env->FindClass("com/objecteye/pojo/vehicle/VehiclePoseResultParam");//wh20210601������pose��� - - jclass cls_SyPoint = env->FindClass("com/objecteye/pojo/common/SyPointParam"); - - - //getmethodId - jmethodID mid_vehicleAnalysisResult = env->GetMethodID(cls_vehicleAnalysisResult, "", "([Lcom/objecteye/pojo/vehicle/VehicleInfoParam;com/objecteye/pojo/vehicle/LineInfoParam;com/objecteye/pojo/vehicle/SegInfoParam;I)V"); - - jmethodID mid_VehicleInfo = env->GetMethodID(cls_VehicleInfo, "", "(Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;Lcom/objecteye/pojo/vehicle/VehicleColorResultParam;Lcom/objecteye/pojo/vehicle/VehicleRecognizeResultParam;Lcom/objecteye/pojo/vehicle/VehiclePlateResultParam;Lcom/objecteye/pojo/vehicle/VehiclePendantDetectResultParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectResultParam;Lcom/objecteye/pojo/vehicle/VehicleFeatureResultParam;Lcom/objecteye/pojo/vehicle/MtaResultParam;Lcom/objecteye/pojo/vehicle/MannedResultParam;I;I;I;F;I;I;I;I;I;I;F;I;I)V"); - - jmethodID mid_VehicleDetectResult = env->GetMethodID(cls_VehicleDetectResult, "", "(Lcom/objecteye/pojo/common/SyRectParam;F)V"); - jmethodID mid_VehicleColorResult = env->GetMethodID(cls_VehicleColorResult, "", "(FI)V"); - //jmethodID mid_VehicleRecgTopnResult = env->GetMethodID(cls_VehicleRecgTopnResult, "", "([Lcom/objecteye/pojo/vehicle/VehicleRecognizeResultParam;I)V");//wh20210527������topn�ӿ� - jmethodID mid_VehicleRecgResult = env->GetMethodID(cls_VehicleRecgResult, "", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;F)V"); - jmethodID mid_VplateResult = env->GetMethodID(cls_VplateResult, "", "(Lcom/objecteye/pojo/common/SyRectParam;F[Lcom/objecteye/pojo/vehicle/VehiclePlateNumParam;FII)V"); - jmethodID mid_VehiclePendantDetResult = env->GetMethodID(cls_VehiclePendantDetResult, "", "([Lcom/objecteye/pojo/vehicle/VehiclePendantDetectInfoParam;I)V"); - jmethodID mid_VehicleIllegalDetResult = env->GetMethodID(cls_VehicleIllegalDetResult, "", "(Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam;)V"); - jmethodID mid_VehicleFeaResult = env->GetMethodID(cls_VehicleFeaResult, "", "([F)V"); - jmethodID mid_SyRect = env->GetMethodID(cls_SyRect, "", "(IIII)V"); - jmethodID mid_VplateNum = env->GetMethodID(cls_VplateNum, "", "(Ljava/lang/String;F)V"); - //jmethodID mid_VehiclePendantDetInfo = env->GetMethodID(cls_VehiclePendantDetInfo, "", "(Lcom/objecteye/pojo/common/SyRectParam;IFI[F)V"); - //wh20210916����� - jmethodID mid_VehiclePendantDetInfo = env->GetMethodID(cls_VehiclePendantDetInfo, "", "(Lcom/objecteye/pojo/common/SyRectParam;IFI)V"); - jmethodID mid_VehicleIllegalDetInfo = env->GetMethodID(cls_VehicleIllegalDetInfo, "", "(Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam;)V"); - jmethodID mid_VehicleIllegalDetDetails = env->GetMethodID(cls_VehicleIllegalDetDetails, "", "(IF)V"); - //jmethodID mid_VehicleSpecialInformationParam = env->GetMethodID(cls_VehicleSpecialInformationParam, "", "(FI)V"); - //jmethodID mid_VehicleSpecialResult = env->GetMethodID(cls_VehicleSpecialResult, "", "([Lcom/objecteye/pojo/vehicle/VehicleSpecialInformationParam;I)V"); - jmethodID mid_MtaResult = env->GetMethodID(cls_MtaResult, "", "(Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;)V"); - jmethodID mid_MtaDetailsParam = env->GetMethodID(cls_MtaDetailsParam, "", "(IF)V"); - //jmethodID mid_StainVplateResultParam = env->GetMethodID(cls_StainVplateResultParam, "", "(FI)V"); - //jmethodID mid_MucktruckcoverResult = env->GetMethodID(cls_MucktruckcoverResult, "", "(IF)V"); - jmethodID mid_MannedResult = env->GetMethodID(cls_MannedResultParam, "", "([Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;I)V");//wh20220222 - jmethodID mid_SyPoint = env->GetMethodID(cls_SyPoint, "", "(II)V");//wh20210601������pose��� - //jmethodID mid_VehiclePoseResult = env->GetMethodID(cls_VehiclePoseResultParam, "", "([Lcom/objecteye/pojo/common/SyPointParam;[F[FDDD)V"); - - jmethodID mid_LineInfo = env->GetMethodID(cls_LineInfo, "", "(Lcom/objecteye/pojo/vehicle/SyPointParam;I)V"); - jmethodID mid_SegInfo = env->GetMethodID(cls_SegInfo, "", "(Lcom/objecteye/pojo/vehicle/SyPointParam;I)V"); - - //set value to param - std::cout << "vehicleInfoArray " << std::endl; - - for (size_t i = 0; i < batchSize; i++) - { - jobjectArray vehicleInfoArray = env->NewObjectArray(vec_result[i].info.size(), cls_VehicleInfo, NULL); - for (int j = 0; j < vec_result[i].info.size(); j++) - { //vehicleDetectRes - auto vehicle_info = vec_result[i].info[j]; - jobject vehicle_detect_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, vehicle_info.vehicle_detect_res.rect.left_, vehicle_info.vehicle_detect_res.rect.top_, vehicle_info.vehicle_detect_res.rect.width_, vehicle_info.vehicle_detect_res.rect.height_); - jobject vehicleDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_detect_res_syRect_rect, vehicle_info.vehicle_detect_res.score); - //vehicleWinDetectRes - jobject vehicle_win_detect_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, vehicle_info.vehicle_win_detect_res.rect.left_, vehicle_info.vehicle_win_detect_res.rect.top_, vehicle_info.vehicle_win_detect_res.rect.width_, vehicle_info.vehicle_win_detect_res.rect.height_); - jobject vehicleWinDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_win_detect_res_syRect_rect, vehicle_info.vehicle_win_detect_res.score); - //vehicleBodyDetectRes - jobject vehicle_body_detect_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, vehicle_info.vehicle_body_detect_res.rect.left_, vehicle_info.vehicle_body_detect_res.rect.top_, vehicle_info.vehicle_body_detect_res.rect.width_, vehicle_info.vehicle_body_detect_res.rect.height_); - jobject vehicleBodyDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_body_detect_res_syRect_rect, vehicle_info.vehicle_body_detect_res.score); - //vehicleColorRes - jobject vehicleColorResult = NULL; - if (global_vehicle_color_config == SY_CONFIG_OPEN) - { - vehicleColorResult = env->NewObject(cls_VehicleColorResult, mid_VehicleColorResult, vehicle_info.vehicle_color_res.score, vehicle_info.vehicle_color_res.index); - } + jobjectArray vehicleInfoArray = env->NewObjectArray(vec_result[i].info.size(), cls_VehicleInfo, NULL); + for (int j = 0; j < vec_result[i].info.size(); j++) + { //vehicleDetectRes + std::cout << "vehicleDetectRes" << std::endl; + auto vehicle_info = vec_result[i].info[j]; + jobject vehicle_detect_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, vehicle_info.vehicle_detect_res.rect.left_, vehicle_info.vehicle_detect_res.rect.top_, vehicle_info.vehicle_detect_res.rect.width_, vehicle_info.vehicle_detect_res.rect.height_); + jobject vehicleDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_detect_res_syRect_rect, vehicle_info.vehicle_detect_res.score); + //vehicleWinDetectRes + jobject vehicle_win_detect_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, vehicle_info.vehicle_win_detect_res.rect.left_, vehicle_info.vehicle_win_detect_res.rect.top_, vehicle_info.vehicle_win_detect_res.rect.width_, vehicle_info.vehicle_win_detect_res.rect.height_); + jobject vehicleWinDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_win_detect_res_syRect_rect, vehicle_info.vehicle_win_detect_res.score); + //vehicleBodyDetectRes + jobject vehicle_body_detect_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, vehicle_info.vehicle_body_detect_res.rect.left_, vehicle_info.vehicle_body_detect_res.rect.top_, vehicle_info.vehicle_body_detect_res.rect.width_, vehicle_info.vehicle_body_detect_res.rect.height_); + jobject vehicleBodyDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_body_detect_res_syRect_rect, vehicle_info.vehicle_body_detect_res.score); + //vehicleColorRes + jobject vehicleColorResult = NULL; + if (global_vehicle_color_config == SY_CONFIG_OPEN) + { + std::cout << "vehicleColorResult" << std::endl; + vehicleColorResult = env->NewObject(cls_VehicleColorResult, mid_VehicleColorResult, vehicle_info.vehicle_color_res.score, vehicle_info.vehicle_color_res.index); + } - //vehicleRecgRes //0618 atlas�Ļ�top1�Ľӿ� - jobject vehicleRecgResult = NULL; - if (global_vehicle_recg_config == SY_CONFIG_OPEN) - { - jstring vehicleBrand = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_brand); - jstring vehicleSubbrand = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_subbrand); - jstring vehicleIssueYear = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_issue_year); - jstring vehicleType = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_type); - jstring freightTon = env->NewStringUTF(vehicle_info.vehicle_recg_res.freight_ton); - vehicleRecgResult = env->NewObject(cls_VehicleRecgResult, mid_VehicleRecgResult, vehicleBrand, vehicleSubbrand, vehicleIssueYear, vehicleType, freightTon, vehicle_info.vehicle_recg_res.name_score); - } + //vehicleRecgRes //0618 atlas�Ļ�top1�Ľӿ� + jobject vehicleRecgResult = NULL; + if (global_vehicle_recg_config == SY_CONFIG_OPEN) + { + std::cout << "vehicleRecgResult" << std::endl; + jstring vehicleBrand = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_brand); + jstring vehicleSubbrand = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_subbrand); + jstring vehicleIssueYear = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_issue_year); + jstring vehicleType = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_type); + jstring freightTon = env->NewStringUTF(vehicle_info.vehicle_recg_res.freight_ton); + vehicleRecgResult = env->NewObject(cls_VehicleRecgResult, mid_VehicleRecgResult, vehicleBrand, vehicleSubbrand, vehicleIssueYear, vehicleType, freightTon, vehicle_info.vehicle_recg_res.name_score); + } - //vehiclePlateDetRecgRes - jobject vplateResult = NULL; - jobject vehicle_plate_det_recg_res_syRect_rect = NULL; - jobjectArray vplateNumArray = NULL; - if (global_vehicle_plate_det_recg_config == SY_CONFIG_OPEN) + //vehiclePlateDetRecgRes + jobject vplateResult = NULL; + jobject vehicle_plate_det_recg_res_syRect_rect = NULL; + jobjectArray vplateNumArray = NULL; + if (global_vehicle_plate_det_recg_config == SY_CONFIG_OPEN) + { + std::cout << "vehicle_plate_det_recg_res_syRect_rect" << std::endl; + vehicle_plate_det_recg_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, vehicle_info.vehicle_plate_det_recg_res.rect.left_, vehicle_info.vehicle_plate_det_recg_res.rect.top_, vehicle_info.vehicle_plate_det_recg_res.rect.width_, vehicle_info.vehicle_plate_det_recg_res.rect.height_); + vplateNumArray = env->NewObjectArray(PLATENUM, cls_VplateNum, NULL); + for (size_t k = 0; k < PLATENUM; k++) { - vehicle_plate_det_recg_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, vehicle_info.vehicle_plate_det_recg_res.rect.left_, vehicle_info.vehicle_plate_det_recg_res.rect.top_, vehicle_info.vehicle_plate_det_recg_res.rect.width_, vehicle_info.vehicle_plate_det_recg_res.rect.height_); - vplateNumArray = env->NewObjectArray(PLATENUM, cls_VplateNum, NULL); - for (size_t k = 0; k < PLATENUM; k++) - { - jstring character = env->NewStringUTF(vehicle_info.vehicle_plate_det_recg_res.recg[k].character); - jobject vplateNum = env->NewObject(cls_VplateNum, mid_VplateNum, character, vehicle_info.vehicle_plate_det_recg_res.recg[k].maxprob); - env->SetObjectArrayElement(vplateNumArray, k, vplateNum); - } + jstring character = env->NewStringUTF(vehicle_info.vehicle_plate_det_recg_res.recg[k].character); + jobject vplateNum = env->NewObject(cls_VplateNum, mid_VplateNum, character, vehicle_info.vehicle_plate_det_recg_res.recg[k].maxprob); + env->SetObjectArrayElement(vplateNumArray, k, vplateNum); } + } - vplateResult = env->NewObject(cls_VplateResult, mid_VplateResult, vehicle_plate_det_recg_res_syRect_rect, vehicle_info.vehicle_plate_det_recg_res.detect_score, vplateNumArray, vehicle_info.vehicle_plate_det_recg_res.num_score, vehicle_info.vehicle_plate_det_recg_res.type, vehicle_info.vehicle_plate_det_recg_res.special_type); + vplateResult = env->NewObject(cls_VplateResult, mid_VplateResult, vehicle_plate_det_recg_res_syRect_rect, vehicle_info.vehicle_plate_det_recg_res.detect_score, vplateNumArray, vehicle_info.vehicle_plate_det_recg_res.num_score, vehicle_info.vehicle_plate_det_recg_res.type, vehicle_info.vehicle_plate_det_recg_res.special_type); - //vehiclePendantDetRes - jobject vehiclePendantDetResult = NULL; - if (global_vehicle_pendant_det_config == SY_CONFIG_OPEN) - { - jobjectArray vehiclePendantDetInfoArray = env->NewObjectArray(vehicle_info.vehicle_pendant_det_res.size(), cls_VehiclePendantDetInfo, NULL); - for (size_t m = 0; m < vehicle_info.vehicle_pendant_det_res.size(); m++) - { - auto one_pendant_res = vehicle_info.vehicle_pendant_det_res[m]; - jobject vehicle_pendant_det_res_vpd_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, one_pendant_res.rect.left_, - one_pendant_res.rect.top_, one_pendant_res.rect.width_, one_pendant_res.rect.height_); - - jobject vehiclePendantDetInfo = env->NewObject(cls_VehiclePendantDetInfo, mid_VehiclePendantDetInfo, vehicle_pendant_det_res_vpd_res_syRect_rect, one_pendant_res.index, one_pendant_res.confidence, one_pendant_res.driver_copilot_info, one_pendant_res.iColor); - - env->SetObjectArrayElement(vehiclePendantDetInfoArray, m, vehiclePendantDetInfo); - } - vehiclePendantDetResult = env->NewObject(cls_VehiclePendantDetResult, mid_VehiclePendantDetResult, vehiclePendantDetInfoArray, vehicle_info.vehicle_pendant_det_res.size()); - } + std::cout << "vplateResult end" << std::endl; - //vehicleIllegalDetRes - jobject vehicleIllegalDetResult = NULL; - if (global_vehicle_illegal_config == SY_CONFIG_OPEN) + //vehiclePendantDetRes + jobject vehiclePendantDetResult = NULL; + if (global_vehicle_pendant_det_config == SY_CONFIG_OPEN) + { + jobjectArray vehiclePendantDetInfoArray = env->NewObjectArray(vehicle_info.vehicle_pendant_det_res.size(), cls_VehiclePendantDetInfo, NULL); + for (size_t m = 0; m < vehicle_info.vehicle_pendant_det_res.size(); m++) { - jobject vehicleIllegalDetDetails_driver_belt = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.driver.belt.status, vehicle_info.vehicle_illegal_det_res.driver.belt.confidence); - jobject vehicleIllegalDetDetails_driver_smoke = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.driver.smoke.status, vehicle_info.vehicle_illegal_det_res.driver.smoke.confidence); - jobject vehicleIllegalDetDetails_driver_call = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.driver.call.status, vehicle_info.vehicle_illegal_det_res.driver.call.confidence); - jobject vehicleIllegalDetDetails_driver_phone = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.driver.phone.status, vehicle_info.vehicle_illegal_det_res.driver.phone.confidence); - jobject vehicleIllegalDetDetails_driver_person = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.driver.person.status, vehicle_info.vehicle_illegal_det_res.driver.person.confidence); - jobject vehicleIllegalDetDetails_copilot_belt = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.copilot.belt.status, vehicle_info.vehicle_illegal_det_res.copilot.belt.confidence); - jobject vehicleIllegalDetDetails_copilot_smoke = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.copilot.smoke.status, vehicle_info.vehicle_illegal_det_res.copilot.smoke.confidence); - jobject vehicleIllegalDetDetails_copilot_call = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.copilot.call.status, vehicle_info.vehicle_illegal_det_res.copilot.call.confidence); - jobject vehicleIllegalDetDetails_copilot_phone = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.copilot.phone.status, vehicle_info.vehicle_illegal_det_res.copilot.phone.confidence); - jobject vehicleIllegalDetDetails_copilot_person = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.copilot.person.status, vehicle_info.vehicle_illegal_det_res.copilot.person.confidence); - - jobject vehicleIllegalDetInfo_driver = env->NewObject(cls_VehicleIllegalDetInfo, mid_VehicleIllegalDetInfo, vehicleIllegalDetDetails_driver_belt, vehicleIllegalDetDetails_driver_smoke, vehicleIllegalDetDetails_driver_phone, vehicleIllegalDetDetails_driver_call, vehicleIllegalDetDetails_driver_person); - jobject vehicleIllegalDetInfo_copilot = env->NewObject(cls_VehicleIllegalDetInfo, mid_VehicleIllegalDetInfo, vehicleIllegalDetDetails_copilot_belt, vehicleIllegalDetDetails_copilot_smoke, vehicleIllegalDetDetails_copilot_phone, vehicleIllegalDetDetails_copilot_call, vehicleIllegalDetDetails_copilot_person); - vehicleIllegalDetResult = env->NewObject(cls_VehicleIllegalDetResult, mid_VehicleIllegalDetResult, vehicleIllegalDetInfo_driver, vehicleIllegalDetInfo_copilot); + auto one_pendant_res = vehicle_info.vehicle_pendant_det_res[m]; + jobject vehicle_pendant_det_res_vpd_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, one_pendant_res.rect.left_, + one_pendant_res.rect.top_, one_pendant_res.rect.width_, one_pendant_res.rect.height_); + + jobject vehiclePendantDetInfo = env->NewObject(cls_VehiclePendantDetInfo, mid_VehiclePendantDetInfo, vehicle_pendant_det_res_vpd_res_syRect_rect, one_pendant_res.index, one_pendant_res.confidence, one_pendant_res.driver_copilot_info, one_pendant_res.iColor); + + env->SetObjectArrayElement(vehiclePendantDetInfoArray, m, vehiclePendantDetInfo); } + vehiclePendantDetResult = env->NewObject(cls_VehiclePendantDetResult, mid_VehiclePendantDetResult, vehiclePendantDetInfoArray, vehicle_info.vehicle_pendant_det_res.size()); + } - //vehicleFeaRes - jobject vehicleFeaResult = NULL; - if (global_vehicle_feature_config == SY_CONFIG_OPEN) - { - jfloatArray feature = env->NewFloatArray(VA_FEATURESIZE); - env->SetFloatArrayRegion(feature, 0, VA_FEATURESIZE, vehicle_info.vehicle_fea_res.feature); - vehicleFeaResult = env->NewObject(cls_VehicleFeaResult, mid_VehicleFeaResult, feature); - } + std::cout << "vehiclePendantDetResult" << std::endl; + + //vehicleIllegalDetRes + jobject vehicleIllegalDetResult = NULL; + if (global_vehicle_illegal_config == SY_CONFIG_OPEN) + { + jobject vehicleIllegalDetDetails_driver_belt = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.driver.belt.status, vehicle_info.vehicle_illegal_det_res.driver.belt.confidence); + jobject vehicleIllegalDetDetails_driver_smoke = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.driver.smoke.status, vehicle_info.vehicle_illegal_det_res.driver.smoke.confidence); + jobject vehicleIllegalDetDetails_driver_call = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.driver.call.status, vehicle_info.vehicle_illegal_det_res.driver.call.confidence); + jobject vehicleIllegalDetDetails_driver_phone = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.driver.phone.status, vehicle_info.vehicle_illegal_det_res.driver.phone.confidence); + jobject vehicleIllegalDetDetails_driver_person = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.driver.person.status, vehicle_info.vehicle_illegal_det_res.driver.person.confidence); + jobject vehicleIllegalDetDetails_copilot_belt = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.copilot.belt.status, vehicle_info.vehicle_illegal_det_res.copilot.belt.confidence); + jobject vehicleIllegalDetDetails_copilot_smoke = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.copilot.smoke.status, vehicle_info.vehicle_illegal_det_res.copilot.smoke.confidence); + jobject vehicleIllegalDetDetails_copilot_call = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.copilot.call.status, vehicle_info.vehicle_illegal_det_res.copilot.call.confidence); + jobject vehicleIllegalDetDetails_copilot_phone = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.copilot.phone.status, vehicle_info.vehicle_illegal_det_res.copilot.phone.confidence); + jobject vehicleIllegalDetDetails_copilot_person = env->NewObject(cls_VehicleIllegalDetDetails, mid_VehicleIllegalDetDetails, vehicle_info.vehicle_illegal_det_res.copilot.person.status, vehicle_info.vehicle_illegal_det_res.copilot.person.confidence); + + jobject vehicleIllegalDetInfo_driver = env->NewObject(cls_VehicleIllegalDetInfo, mid_VehicleIllegalDetInfo, vehicleIllegalDetDetails_driver_belt, vehicleIllegalDetDetails_driver_smoke, vehicleIllegalDetDetails_driver_phone, vehicleIllegalDetDetails_driver_call, vehicleIllegalDetDetails_driver_person); + jobject vehicleIllegalDetInfo_copilot = env->NewObject(cls_VehicleIllegalDetInfo, mid_VehicleIllegalDetInfo, vehicleIllegalDetDetails_copilot_belt, vehicleIllegalDetDetails_copilot_smoke, vehicleIllegalDetDetails_copilot_phone, vehicleIllegalDetDetails_copilot_call, vehicleIllegalDetDetails_copilot_person); + vehicleIllegalDetResult = env->NewObject(cls_VehicleIllegalDetResult, mid_VehicleIllegalDetResult, vehicleIllegalDetInfo_driver, vehicleIllegalDetInfo_copilot); + } + + //vehicleFeaRes + jobject vehicleFeaResult = NULL; + if (global_vehicle_feature_config == SY_CONFIG_OPEN) + { + jfloatArray feature = env->NewFloatArray(VA_FEATURESIZE); + env->SetFloatArrayRegion(feature, 0, VA_FEATURESIZE, vehicle_info.vehicle_fea_res.feature); + vehicleFeaResult = env->NewObject(cls_VehicleFeaResult, mid_VehicleFeaResult, feature); + } - //MtaResultParam - jobject mtaResult = NULL; - if (global_vehicle_motor_tricycle_analysis_config == SY_CONFIG_OPEN) + //MtaResultParam + jobject mtaResult = NULL; + if (global_vehicle_motor_tricycle_analysis_config == SY_CONFIG_OPEN) + { + jobject mtaDetailsParam_motor_driver_helmeted = env->NewObject(cls_MtaDetailsParam, mid_MtaDetailsParam, vehicle_info.mta_res.motor_driver_helmeted.status, vehicle_info.mta_res.motor_driver_helmeted.confidence); + jobject mtaDetailsParam_motor_manned = env->NewObject(cls_MtaDetailsParam, mid_MtaDetailsParam, vehicle_info.mta_res.motor_manned.status, vehicle_info.mta_res.motor_manned.confidence); + jobject mtaDetailsParam_tricycle_manned = env->NewObject(cls_MtaDetailsParam, mid_MtaDetailsParam, vehicle_info.mta_res.tricycle_manned.status, vehicle_info.mta_res.tricycle_manned.confidence); + jobject mtaDetailsParam_motor_driver_hs_rect = NULL; + //if (global_vehicle_motor_hs_output_config == SY_CONFIG_OPEN) { - jobject mtaDetailsParam_motor_driver_helmeted = env->NewObject(cls_MtaDetailsParam, mid_MtaDetailsParam, vehicle_info.mta_res.motor_driver_helmeted.status, vehicle_info.mta_res.motor_driver_helmeted.confidence); - jobject mtaDetailsParam_motor_manned = env->NewObject(cls_MtaDetailsParam, mid_MtaDetailsParam, vehicle_info.mta_res.motor_manned.status, vehicle_info.mta_res.motor_manned.confidence); - jobject mtaDetailsParam_tricycle_manned = env->NewObject(cls_MtaDetailsParam, mid_MtaDetailsParam, vehicle_info.mta_res.tricycle_manned.status, vehicle_info.mta_res.tricycle_manned.confidence); - jobject mtaDetailsParam_motor_driver_hs_rect = NULL; - //if (global_vehicle_motor_hs_output_config == SY_CONFIG_OPEN) - { - jobject mtaDetailsParam_motor_driver_hs_rect_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, vehicle_info.mta_res.motor_driver_hs_rect.rect.left_, vehicle_info.mta_res.motor_driver_hs_rect.rect.top_, vehicle_info.mta_res.motor_driver_hs_rect.rect.width_, vehicle_info.mta_res.motor_driver_hs_rect.rect.height_); - mtaDetailsParam_motor_driver_hs_rect = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, mtaDetailsParam_motor_driver_hs_rect_syRect_rect, vehicle_info.mta_res.motor_driver_hs_rect.score); - } - mtaResult = env->NewObject(cls_MtaResult, mid_MtaResult, mtaDetailsParam_motor_driver_helmeted, mtaDetailsParam_motor_manned, mtaDetailsParam_tricycle_manned, mtaDetailsParam_motor_driver_hs_rect); + jobject mtaDetailsParam_motor_driver_hs_rect_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, vehicle_info.mta_res.motor_driver_hs_rect.rect.left_, vehicle_info.mta_res.motor_driver_hs_rect.rect.top_, vehicle_info.mta_res.motor_driver_hs_rect.rect.width_, vehicle_info.mta_res.motor_driver_hs_rect.rect.height_); + mtaDetailsParam_motor_driver_hs_rect = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, mtaDetailsParam_motor_driver_hs_rect_syRect_rect, vehicle_info.mta_res.motor_driver_hs_rect.score); } + mtaResult = env->NewObject(cls_MtaResult, mid_MtaResult, mtaDetailsParam_motor_driver_helmeted, mtaDetailsParam_motor_manned, mtaDetailsParam_tricycle_manned, mtaDetailsParam_motor_driver_hs_rect); + } - //LorryMannedResultParam - jobject MannedResult = NULL; - if (global_vehicle_manned_config == SY_CONFIG_OPEN) - { - int MannedResHsCount = vehicle_info.manned_res.hs_count; + //LorryMannedResultParam + jobject MannedResult = NULL; + if (global_vehicle_manned_config == SY_CONFIG_OPEN) + { + int MannedResHsCount = vehicle_info.manned_res.hs_count; - jobjectArray hsDetectResultArray = env->NewObjectArray(MannedResHsCount, cls_VehicleDetectResult, NULL); + jobjectArray hsDetectResultArray = env->NewObjectArray(MannedResHsCount, cls_VehicleDetectResult, NULL); for (size_t m = 0; m < MannedResHsCount; m++) - { - jobject Manned_hsDetect_syRect = env->NewObject(cls_SyRect, mid_SyRect, - vehicle_info.manned_res.hs_rect[m].rect.left_, - vehicle_info.manned_res.hs_rect[m].rect.top_, - vehicle_info.manned_res.hs_rect[m].rect.width_, - vehicle_info.manned_res.hs_rect[m].rect.height_); - - jobject Manned_hsDetect = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, Manned_hsDetect_syRect, vehicle_info.manned_res.hs_rect[m].score); + { + jobject Manned_hsDetect_syRect = env->NewObject(cls_SyRect, mid_SyRect, + vehicle_info.manned_res.hs_rect[m].rect.left_, + vehicle_info.manned_res.hs_rect[m].rect.top_, + vehicle_info.manned_res.hs_rect[m].rect.width_, + vehicle_info.manned_res.hs_rect[m].rect.height_); - env->SetObjectArrayElement(hsDetectResultArray, m, Manned_hsDetect); - } + jobject Manned_hsDetect = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, Manned_hsDetect_syRect, vehicle_info.manned_res.hs_rect[m].score); - MannedResult = env->NewObject(cls_MannedResultParam, mid_MannedResult, - hsDetectResultArray, - MannedResHsCount); + env->SetObjectArrayElement(hsDetectResultArray, m, Manned_hsDetect); } - jint type = vehicle_info.type; - jint vpt_type = vehicle_info.vpt_type; - jint rainshed = vehicle_info.rainshed; //是否安装雨棚, 0 有雨棚 1 无雨棚 - jfloat rainshed_prob = vehicle_info.rainshed_prob; - jint truck_manned = vehicle_info.truck_manned; - jint motor_manned = vehicle_info.motor_manned; - jint human_upper_color = vehicle_info.human_upper_color; - jint human_lower_color = vehicle_info.human_lower_color; - jint reverse_driving = vehicle_info.reverse_driving; // 0 正常行驶 1 逆行 -1 未知 - jint phoning = vehicle_info.phoning; // 骑车打电话 - jfloat phoning_prob = vehicle_info.phoning_prob; - jint cross_line = vehicle_info.cross_line; // 压实线, 1 黄实线 2 白实线 -1 其他 - jint cross_diversion_line = vehicle_info.cross_diversion_line; // 压导流线 1 压了 -1 未压 - - jobject vehicleInfo = env->NewObject(cls_VehicleInfo, mid_VehicleInfo, vehicleDetectResult, vehicleWinDetectResult, vehicleBodyDetectResult, vehicleColorResult, vehicleRecgResult, vplateResult, vehiclePendantDetResult, vehicleIllegalDetResult, vehicleFeaResult,mtaResult, MannedResult, type, vpt_type, rainshed, rainshed_prob, truck_manned, motor_manned, human_upper_color, reverse_driving, phoning, phoning_prob, cross_line, cross_diversion_line); - - env->SetObjectArrayElement(vehicleInfoArray, j, vehicleInfo); + MannedResult = env->NewObject(cls_MannedResultParam, mid_MannedResult, + hsDetectResultArray, + MannedResHsCount); } - std::cout << "line info " << std::endl; + std::cout << "type" << std::endl; + jint type = vehicle_info.type; + jint vpt_type = vehicle_info.vpt_type; + jint rainshed = vehicle_info.rainshed; //是否安装雨棚, 0 有雨棚 1 无雨棚 + jfloat rainshed_prob = vehicle_info.rainshed_prob; + jint truck_manned = vehicle_info.truck_manned; + jint motor_manned = vehicle_info.motor_manned; + jint human_upper_color = vehicle_info.human_upper_color; + jint human_lower_color = vehicle_info.human_lower_color; + jint reverse_driving = vehicle_info.reverse_driving; // 0 正常行驶 1 逆行 -1 未知 + jint phoning = vehicle_info.phoning; // 骑车打电话 + jfloat phoning_prob = vehicle_info.phoning_prob; + jint cross_line = vehicle_info.cross_line; // 压实线, 1 黄实线 2 白实线 -1 其他 + jint cross_diversion_line = vehicle_info.cross_diversion_line; // 压导流线 1 压了 -1 未压 - // 道路标志线 - jobjectArray LineInfoArray = env->NewObjectArray(vec_result[i].vec_line.size(), cls_LineInfo, NULL); - for (int j = 0; j < vec_result[i].vec_line.size(); j++) - { - auto line_info = vec_result[i].vec_line[j]; - jobjectArray ptArray = env->NewObjectArray(line_info.vec_pt.size(), cls_LineInfo, NULL); - for (int k = 0; k < line_info.vec_pt.size(); k++) - { - auto pt = line_info.vec_pt[k]; - jobject line_info_point = env->NewObject(cls_SyPoint, mid_SyPoint, pt.x, pt.y); - env->SetObjectArrayElement(ptArray, k, line_info_point); - } + jobject vehicleInfo = env->NewObject(cls_VehicleInfo, mid_VehicleInfo, vehicleDetectResult, vehicleWinDetectResult, vehicleBodyDetectResult, vehicleColorResult, vehicleRecgResult, vplateResult, vehiclePendantDetResult, vehicleIllegalDetResult, vehicleFeaResult,mtaResult, MannedResult, type, vpt_type, rainshed, rainshed_prob, truck_manned, motor_manned, human_upper_color, human_lower_color, reverse_driving, phoning, phoning_prob, cross_line, cross_diversion_line); - jobject one_line_info = env->NewObject(cls_LineInfo, mid_LineInfo, ptArray, line_info.line_type); + std::cout << "vehicleInfo end" << std::endl; - env->SetObjectArrayElement(LineInfoArray, j, one_line_info); - } + env->SetObjectArrayElement(vehicleInfoArray, j, vehicleInfo); + + std::cout << "SetObjectArrayElement" << std::endl; + } - std::cout << "road info " << std::endl; + std::cout << "line info " << std::endl; - // 道路 - jobjectArray RoadInfoArray = env->NewObjectArray(vec_result[i].vec_road.size(), cls_SegInfo, NULL); - for (int j = 0; j < vec_result[i].vec_road.size(); j++) + // 道路标志线 + jobjectArray LineInfoArray = env->NewObjectArray(vec_result[i].vec_line.size(), cls_LineInfo, NULL); + for (int j = 0; j < vec_result[i].vec_line.size(); j++) + { + auto line_info = vec_result[i].vec_line[j]; + jobjectArray ptArray = env->NewObjectArray(line_info.vec_pt.size(), cls_SyPoint, NULL); + for (int k = 0; k < line_info.vec_pt.size(); k++) { - auto road_info = vec_result[i].vec_road[j]; - jobjectArray ptArray = env->NewObjectArray(road_info.vec_pt.size(), cls_SyPoint, NULL); - for (int k = 0; k < road_info.vec_pt.size(); k++) - { - auto pt = road_info.vec_pt[k]; - jobject road_info_point = env->NewObject(cls_SyPoint, mid_SyPoint, pt.x, pt.y); - env->SetObjectArrayElement(ptArray, k, road_info_point); - } + auto pt = line_info.vec_pt[k]; + jobject line_info_point = env->NewObject(cls_SyPoint, mid_SyPoint, pt.x, pt.y); + env->SetObjectArrayElement(ptArray, k, line_info_point); + } - jobject one_road_info = env->NewObject(cls_SegInfo, mid_SegInfo, ptArray, road_info.seg_type); + jobject one_line_info = env->NewObject(cls_LineInfo, mid_LineInfo, ptArray, line_info.line_type); - env->SetObjectArrayElement(RoadInfoArray, j, one_road_info); + env->SetObjectArrayElement(LineInfoArray, j, one_line_info); + } + + std::cout << "road info " << std::endl; + + // 道路 + jobjectArray RoadInfoArray = env->NewObjectArray(vec_result[i].vec_road.size(), cls_SegInfo, NULL); + for (int j = 0; j < vec_result[i].vec_road.size(); j++) + { + auto road_info = vec_result[i].vec_road[j]; + jobjectArray ptArray = env->NewObjectArray(road_info.vec_pt.size(), cls_SyPoint, NULL); + for (int k = 0; k < road_info.vec_pt.size(); k++) + { + auto pt = road_info.vec_pt[k]; + jobject road_info_point = env->NewObject(cls_SyPoint, mid_SyPoint, pt.x, pt.y); + env->SetObjectArrayElement(ptArray, k, road_info_point); } - jobject vehicleAnalysisResult = env->NewObject(cls_vehicleAnalysisResult, mid_vehicleAnalysisResult, vehicleInfoArray, LineInfoArray, RoadInfoArray, vec_result[i].info.size()); - env->SetObjectArrayElement(vehicleAnalysisResultParams, i, vehicleAnalysisResult); + jobject one_road_info = env->NewObject(cls_SegInfo, mid_SegInfo, ptArray, road_info.seg_type); + + env->SetObjectArrayElement(RoadInfoArray, j, one_road_info); } - + + std::cout << "add new " << std::endl; + + jobject vehicleAnalysisResult = env->NewObject(cls_vehicleAnalysisResult, mid_vehicleAnalysisResult, vehicleInfoArray, LineInfoArray, RoadInfoArray, vec_result[i].info.size()); + env->SetObjectArrayElement(vehicleAnalysisResultParams, i, vehicleAnalysisResult); } ACL_CALL(aclrtSetCurrentContext(ctx), ACL_ERROR_NONE, FAILED); @@ -623,7 +608,7 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI (void) aclrtDestroyStream(stream); aclrtDestroyContext(ctx); - return ret; + return SUCCESS; } /* @@ -682,31 +667,4 @@ sy_format getImgByteType(int type) break; } return syFormat; -} - -// //curl writefunction to be passed as a parameter -// // we can't ever expect to get the whole image in one piece, -// // every router / hub is entitled to fragment it into parts -// // (like 1-8k at a time), -// // so insert the part at the end of our stream. -// size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata) -// { -// vector *stream = (vector*)userdata; -// size_t count = size * nmemb; -// stream->insert(stream->end(), ptr, ptr + count); -// return count; -// } - -// //function to retrieve the image as cv::Mat data type -// cv::Mat curlImg(const char *img_url, int timeout = 10) -// { -// vector stream; -// CURL *curl = curl_easy_init(); -// curl_easy_setopt(curl, CURLOPT_URL, img_url); //the img url -// curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); // pass the writefunction -// curl_easy_setopt(curl, CURLOPT_WRITEDATA, &stream); // pass the stream ptr to the writefunction -// curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout); // timeout if curl_easy hangs, -// CURLcode res = curl_easy_perform(curl); // start curl -// curl_easy_cleanup(curl); // cleanup -// return cv::imdecode(stream, -1); // 'keep-as-is' -// } +} \ No newline at end of file