Commit e63aa283539301812c38acea4c8c75efc3be200b

Authored by Hu Chunming
1 parent ba6761f1

修复jni值传递错误问题

Showing 1 changed file with 254 additions and 296 deletions
jni/VehicleNativeInterface.cpp
... ... @@ -14,8 +14,6 @@
14 14 #include <opencv2/opencv.hpp>
15 15 #include "base64.h"
16 16  
17   -// #include "curl/curl.h"
18   -
19 17 //dvpp����
20 18 #include "dvpp_process.h"
21 19 #include "utils.h"
... ... @@ -90,9 +88,7 @@ using namespace std;
90 88 * ��������
91 89 * */
92 90 sy_format getImgByteType(int type);
93   -// size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata);
94   -// //function to retrieve the image as cv::Mat data type
95   -// cv::Mat curlImg(const char *img_url, int timeout);
  91 +
96 92  
97 93 /**
98 94 * ȫ�ֱ���
... ... @@ -311,7 +307,7 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI
311 307 std::cout << "village_pic_analysis " << std::endl;
312 308  
313 309 std::vector<AnalysisResult> vec_result = village_pic_analysis(vaHandle, batch_img, batchSize);
314   - if (vec_result.size() <= 0)
  310 + if (vec_result.size() <= 0 || vec_result.size() != batchSize)
315 311 {
316 312 printf("jni info:village_pic_analysis failed.");
317 313 return -1;
... ... @@ -319,302 +315,291 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI
319 315 cout << "result size:" << vec_result.size() << endl;
320 316  
321 317 t3 = msecond();
322   - //printf("va jni info:process time: %.2f\n", (t3 - t2));
323   -
324   -
325   - for (int b = 0; b < batchSize; b++)
326   - {
327   -
328   - //printf("VAJNI_TEST begin reult: %d, count: %d\n", b, result[b].count);
329   - for (int c = 0; c < vec_result[b].info.size(); c++)
330   - {
331   - //std::cout << "obj_quality_idx=" << result[b].info[c].obj_quality_idx << std::endl; //聚档数据类型�?-无效数据�?-低质数据�?-优质数据
332   -
333   - std::string str_vehicle_type;
334   - int vehicle_type = vec_result[b].info[c].type;
335   - //std::cout << "vehicle_type=" << vehicle_type << std::endl;
336   - if (vehicle_type == 0)str_vehicle_type = "head";
337   - else if (vehicle_type == 1)str_vehicle_type = "rear";
338   - else if (vehicle_type == 2)str_vehicle_type = "motor";
339   - else if (vehicle_type == 3)str_vehicle_type = "tricycle";
340   - else if (vehicle_type == 4)str_vehicle_type = "body";
341   - //std::cout << "vehicle_type info:" << str_vehicle_type << std::endl;
342   - }
343   - }
344   -
345 318  
346   - if (ret == SUCCESS)
  319 + std::cout << "struct " << std::endl;
  320 + // getClass
  321 + jclass cls_vehicleAnalysisResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleAnalysisResultParam");
  322 + jclass cls_VehicleInfo = env->FindClass("com/objecteye/pojo/vehicle/VehicleInfoParam");
  323 + jclass cls_LineInfo = env->FindClass("com/objecteye/pojo/vehicle/LineInfoParam");
  324 + jclass cls_SegInfo = env->FindClass("com/objecteye/pojo/vehicle/SegInfoParam");
  325 +
  326 + jclass cls_VehicleDetectResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleDetectResultParam");
  327 + jclass cls_VehicleColorResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleColorResultParam");
  328 + jclass cls_VehicleRecgResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleRecognizeResultParam");
  329 + //jclass cls_VehicleRecgTopnResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleRecognizeResultTopnParam");//wh20210527������topn�ӿ�
  330 + jclass cls_VplateResult = env->FindClass("com/objecteye/pojo/vehicle/VehiclePlateResultParam");
  331 + jclass cls_VehiclePendantDetResult = env->FindClass("com/objecteye/pojo/vehicle/VehiclePendantDetectResultParam");
  332 + jclass cls_VehicleIllegalDetResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectResultParam");
  333 + jclass cls_VehicleFeaResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleFeatureResultParam");
  334 + jclass cls_SyRect = env->FindClass("com/objecteye/pojo/common/SyRectParam");
  335 + jclass cls_VplateNum = env->FindClass("com/objecteye/pojo/vehicle/VehiclePlateNumParam");
  336 + jclass cls_VehiclePendantDetInfo = env->FindClass("com/objecteye/pojo/vehicle/VehiclePendantDetectInfoParam");
  337 + jclass cls_VehicleIllegalDetInfo = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam");
  338 + jclass cls_VehicleIllegalDetDetails = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam");
  339 + //jclass cls_VehicleSpecialInformationParam = env->FindClass("com/objecteye/pojo/vehicle/VehicleSpecialInformationParam");
  340 + //jclass cls_VehicleSpecialResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleSpecialResultParam");
  341 + //jclass cls_MucktruckcoverResult = env->FindClass("com/objecteye/pojo/vehicle/MucktruckcoverResultParam");
  342 + jclass cls_MtaResult = env->FindClass("com/objecteye/pojo/vehicle/MtaResultParam");
  343 + jclass cls_MtaDetailsParam = env->FindClass("com/objecteye/pojo/vehicle/MtaDetailsParam");
  344 + //jclass cls_StainVplateResultParam = env->FindClass("com/objecteye/pojo/vehicle/StainVplateResultParam");
  345 + jclass cls_MannedResultParam = env->FindClass("com/objecteye/pojo/vehicle/MannedResultParam");
  346 +
  347 + //jclass cls_VehiclePoseResultParam = env->FindClass("com/objecteye/pojo/vehicle/VehiclePoseResultParam");//wh20210601������pose���
  348 +
  349 + jclass cls_SyPoint = env->FindClass("com/objecteye/pojo/common/SyPointParam");
  350 +
  351 +
  352 + //getmethodId
  353 + jmethodID mid_vehicleAnalysisResult = env->GetMethodID(cls_vehicleAnalysisResult, "<init>", "([Lcom/objecteye/pojo/vehicle/VehicleInfoParam;[Lcom/objecteye/pojo/vehicle/LineInfoParam;[Lcom/objecteye/pojo/vehicle/SegInfoParam;I)V");
  354 +
  355 + jmethodID mid_VehicleInfo = env->GetMethodID(cls_VehicleInfo, "<init>", "(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");
  356 +
  357 + jmethodID mid_VehicleDetectResult = env->GetMethodID(cls_VehicleDetectResult, "<init>", "(Lcom/objecteye/pojo/common/SyRectParam;F)V");
  358 + jmethodID mid_VehicleColorResult = env->GetMethodID(cls_VehicleColorResult, "<init>", "(FI)V");
  359 + //jmethodID mid_VehicleRecgTopnResult = env->GetMethodID(cls_VehicleRecgTopnResult, "<init>", "([Lcom/objecteye/pojo/vehicle/VehicleRecognizeResultParam;I)V");//wh20210527������topn�ӿ�
  360 + jmethodID mid_VehicleRecgResult = env->GetMethodID(cls_VehicleRecgResult, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;F)V");
  361 + jmethodID mid_VplateResult = env->GetMethodID(cls_VplateResult, "<init>", "(Lcom/objecteye/pojo/common/SyRectParam;F[Lcom/objecteye/pojo/vehicle/VehiclePlateNumParam;FII)V");
  362 + jmethodID mid_VehiclePendantDetResult = env->GetMethodID(cls_VehiclePendantDetResult, "<init>", "([Lcom/objecteye/pojo/vehicle/VehiclePendantDetectInfoParam;I)V");
  363 + jmethodID mid_VehicleIllegalDetResult = env->GetMethodID(cls_VehicleIllegalDetResult, "<init>", "(Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam;)V");
  364 + jmethodID mid_VehicleFeaResult = env->GetMethodID(cls_VehicleFeaResult, "<init>", "([F)V");
  365 + jmethodID mid_SyRect = env->GetMethodID(cls_SyRect, "<init>", "(IIII)V");
  366 + jmethodID mid_VplateNum = env->GetMethodID(cls_VplateNum, "<init>", "(Ljava/lang/String;F)V");
  367 +
  368 +
  369 + jmethodID mid_VehiclePendantDetInfo = env->GetMethodID(cls_VehiclePendantDetInfo, "<init>", "(Lcom/objecteye/pojo/common/SyRectParam;IFII)V");
  370 + jmethodID mid_VehicleIllegalDetInfo = env->GetMethodID(cls_VehicleIllegalDetInfo, "<init>", "(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");
  371 + jmethodID mid_VehicleIllegalDetDetails = env->GetMethodID(cls_VehicleIllegalDetDetails, "<init>", "(IF)V");
  372 + //jmethodID mid_VehicleSpecialInformationParam = env->GetMethodID(cls_VehicleSpecialInformationParam, "<init>", "(FI)V");
  373 + //jmethodID mid_VehicleSpecialResult = env->GetMethodID(cls_VehicleSpecialResult, "<init>", "([Lcom/objecteye/pojo/vehicle/VehicleSpecialInformationParam;I)V");
  374 + jmethodID mid_MtaResult = env->GetMethodID(cls_MtaResult, "<init>", "(Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;)V");
  375 + jmethodID mid_MtaDetailsParam = env->GetMethodID(cls_MtaDetailsParam, "<init>", "(IF)V");
  376 + //jmethodID mid_StainVplateResultParam = env->GetMethodID(cls_StainVplateResultParam, "<init>", "(FI)V");
  377 + //jmethodID mid_MucktruckcoverResult = env->GetMethodID(cls_MucktruckcoverResult, "<init>", "(IF)V");
  378 + jmethodID mid_MannedResult = env->GetMethodID(cls_MannedResultParam, "<init>", "([Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;I)V");//wh20220222
  379 + jmethodID mid_SyPoint = env->GetMethodID(cls_SyPoint, "<init>", "(II)V");//wh20210601������pose���
  380 + //jmethodID mid_VehiclePoseResult = env->GetMethodID(cls_VehiclePoseResultParam, "<init>", "([Lcom/objecteye/pojo/common/SyPointParam;[F[FDDD)V");
  381 +
  382 + jmethodID mid_LineInfo = env->GetMethodID(cls_LineInfo, "<init>", "([Lcom/objecteye/pojo/vehicle/SyPointParam;I)V");
  383 + jmethodID mid_SegInfo = env->GetMethodID(cls_SegInfo, "<init>", "([Lcom/objecteye/pojo/vehicle/SyPointParam;I)V");
  384 +
  385 + //set value to param
  386 + std::cout << "vehicleInfoArray " << std::endl;
  387 +
  388 + for (size_t i = 0; i < batchSize; i++)
347 389 {
348   - // getClass
349   - jclass cls_vehicleAnalysisResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleAnalysisResultParam");
350   - jclass cls_VehicleInfo = env->FindClass("com/objecteye/pojo/vehicle/VehicleInfoParam");
351   - jclass cls_LineInfo = env->FindClass("com/objecteye/pojo/vehicle/LineInfoParam");
352   - jclass cls_SegInfo = env->FindClass("com/objecteye/pojo/vehicle/SegInfoParam");
353   -
354   - jclass cls_VehicleDetectResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleDetectResultParam");
355   - jclass cls_VehicleColorResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleColorResultParam");
356   - jclass cls_VehicleRecgResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleRecognizeResultParam");
357   - //jclass cls_VehicleRecgTopnResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleRecognizeResultTopnParam");//wh20210527������topn�ӿ�
358   - jclass cls_VplateResult = env->FindClass("com/objecteye/pojo/vehicle/VehiclePlateResultParam");
359   - jclass cls_VehiclePendantDetResult = env->FindClass("com/objecteye/pojo/vehicle/VehiclePendantDetectResultParam");
360   - jclass cls_VehicleIllegalDetResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectResultParam");
361   - jclass cls_VehicleFeaResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleFeatureResultParam");
362   - jclass cls_SyRect = env->FindClass("com/objecteye/pojo/common/SyRectParam");
363   - jclass cls_VplateNum = env->FindClass("com/objecteye/pojo/vehicle/VehiclePlateNumParam");
364   - jclass cls_VehiclePendantDetInfo = env->FindClass("com/objecteye/pojo/vehicle/VehiclePendantDetectInfoParam");
365   - jclass cls_VehicleIllegalDetInfo = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam");
366   - jclass cls_VehicleIllegalDetDetails = env->FindClass("com/objecteye/pojo/vehicle/VehicleIllegalDetectDetailsParam");
367   - //jclass cls_VehicleSpecialInformationParam = env->FindClass("com/objecteye/pojo/vehicle/VehicleSpecialInformationParam");
368   - //jclass cls_VehicleSpecialResult = env->FindClass("com/objecteye/pojo/vehicle/VehicleSpecialResultParam");
369   - //jclass cls_MucktruckcoverResult = env->FindClass("com/objecteye/pojo/vehicle/MucktruckcoverResultParam");
370   - jclass cls_MtaResult = env->FindClass("com/objecteye/pojo/vehicle/MtaResultParam");
371   - jclass cls_MtaDetailsParam = env->FindClass("com/objecteye/pojo/vehicle/MtaDetailsParam");
372   - //jclass cls_StainVplateResultParam = env->FindClass("com/objecteye/pojo/vehicle/StainVplateResultParam");
373   - jclass cls_MannedResultParam = env->FindClass("com/objecteye/pojo/vehicle/MannedResultParam");
374   -
375   - //jclass cls_VehiclePoseResultParam = env->FindClass("com/objecteye/pojo/vehicle/VehiclePoseResultParam");//wh20210601������pose���
376   -
377   - jclass cls_SyPoint = env->FindClass("com/objecteye/pojo/common/SyPointParam");
378   -
379   -
380   - //getmethodId
381   - jmethodID mid_vehicleAnalysisResult = env->GetMethodID(cls_vehicleAnalysisResult, "<init>", "([Lcom/objecteye/pojo/vehicle/VehicleInfoParam;com/objecteye/pojo/vehicle/LineInfoParam;com/objecteye/pojo/vehicle/SegInfoParam;I)V");
382   -
383   - jmethodID mid_VehicleInfo = env->GetMethodID(cls_VehicleInfo, "<init>", "(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");
384   -
385   - jmethodID mid_VehicleDetectResult = env->GetMethodID(cls_VehicleDetectResult, "<init>", "(Lcom/objecteye/pojo/common/SyRectParam;F)V");
386   - jmethodID mid_VehicleColorResult = env->GetMethodID(cls_VehicleColorResult, "<init>", "(FI)V");
387   - //jmethodID mid_VehicleRecgTopnResult = env->GetMethodID(cls_VehicleRecgTopnResult, "<init>", "([Lcom/objecteye/pojo/vehicle/VehicleRecognizeResultParam;I)V");//wh20210527������topn�ӿ�
388   - jmethodID mid_VehicleRecgResult = env->GetMethodID(cls_VehicleRecgResult, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;F)V");
389   - jmethodID mid_VplateResult = env->GetMethodID(cls_VplateResult, "<init>", "(Lcom/objecteye/pojo/common/SyRectParam;F[Lcom/objecteye/pojo/vehicle/VehiclePlateNumParam;FII)V");
390   - jmethodID mid_VehiclePendantDetResult = env->GetMethodID(cls_VehiclePendantDetResult, "<init>", "([Lcom/objecteye/pojo/vehicle/VehiclePendantDetectInfoParam;I)V");
391   - jmethodID mid_VehicleIllegalDetResult = env->GetMethodID(cls_VehicleIllegalDetResult, "<init>", "(Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam;Lcom/objecteye/pojo/vehicle/VehicleIllegalDetectInfoParam;)V");
392   - jmethodID mid_VehicleFeaResult = env->GetMethodID(cls_VehicleFeaResult, "<init>", "([F)V");
393   - jmethodID mid_SyRect = env->GetMethodID(cls_SyRect, "<init>", "(IIII)V");
394   - jmethodID mid_VplateNum = env->GetMethodID(cls_VplateNum, "<init>", "(Ljava/lang/String;F)V");
395   - //jmethodID mid_VehiclePendantDetInfo = env->GetMethodID(cls_VehiclePendantDetInfo, "<init>", "(Lcom/objecteye/pojo/common/SyRectParam;IFI[F)V");
396   - //wh20210916�����
397   - jmethodID mid_VehiclePendantDetInfo = env->GetMethodID(cls_VehiclePendantDetInfo, "<init>", "(Lcom/objecteye/pojo/common/SyRectParam;IFI)V");
398   - jmethodID mid_VehicleIllegalDetInfo = env->GetMethodID(cls_VehicleIllegalDetInfo, "<init>", "(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");
399   - jmethodID mid_VehicleIllegalDetDetails = env->GetMethodID(cls_VehicleIllegalDetDetails, "<init>", "(IF)V");
400   - //jmethodID mid_VehicleSpecialInformationParam = env->GetMethodID(cls_VehicleSpecialInformationParam, "<init>", "(FI)V");
401   - //jmethodID mid_VehicleSpecialResult = env->GetMethodID(cls_VehicleSpecialResult, "<init>", "([Lcom/objecteye/pojo/vehicle/VehicleSpecialInformationParam;I)V");
402   - jmethodID mid_MtaResult = env->GetMethodID(cls_MtaResult, "<init>", "(Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/MtaDetailsParam;Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;)V");
403   - jmethodID mid_MtaDetailsParam = env->GetMethodID(cls_MtaDetailsParam, "<init>", "(IF)V");
404   - //jmethodID mid_StainVplateResultParam = env->GetMethodID(cls_StainVplateResultParam, "<init>", "(FI)V");
405   - //jmethodID mid_MucktruckcoverResult = env->GetMethodID(cls_MucktruckcoverResult, "<init>", "(IF)V");
406   - jmethodID mid_MannedResult = env->GetMethodID(cls_MannedResultParam, "<init>", "([Lcom/objecteye/pojo/vehicle/VehicleDetectResultParam;I)V");//wh20220222
407   - jmethodID mid_SyPoint = env->GetMethodID(cls_SyPoint, "<init>", "(II)V");//wh20210601������pose���
408   - //jmethodID mid_VehiclePoseResult = env->GetMethodID(cls_VehiclePoseResultParam, "<init>", "([Lcom/objecteye/pojo/common/SyPointParam;[F[FDDD)V");
409   -
410   - jmethodID mid_LineInfo = env->GetMethodID(cls_LineInfo, "<init>", "(Lcom/objecteye/pojo/vehicle/SyPointParam;I)V");
411   - jmethodID mid_SegInfo = env->GetMethodID(cls_SegInfo, "<init>", "(Lcom/objecteye/pojo/vehicle/SyPointParam;I)V");
412   -
413   - //set value to param
414   - std::cout << "vehicleInfoArray " << std::endl;
415   -
416   - for (size_t i = 0; i < batchSize; i++)
417   - {
418   - jobjectArray vehicleInfoArray = env->NewObjectArray(vec_result[i].info.size(), cls_VehicleInfo, NULL);
419   - for (int j = 0; j < vec_result[i].info.size(); j++)
420   - { //vehicleDetectRes
421   - auto vehicle_info = vec_result[i].info[j];
422   - 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_);
423   - jobject vehicleDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_detect_res_syRect_rect, vehicle_info.vehicle_detect_res.score);
424   - //vehicleWinDetectRes
425   - 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_);
426   - jobject vehicleWinDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_win_detect_res_syRect_rect, vehicle_info.vehicle_win_detect_res.score);
427   - //vehicleBodyDetectRes
428   - 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_);
429   - jobject vehicleBodyDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_body_detect_res_syRect_rect, vehicle_info.vehicle_body_detect_res.score);
430   - //vehicleColorRes
431   - jobject vehicleColorResult = NULL;
432   - if (global_vehicle_color_config == SY_CONFIG_OPEN)
433   - {
434   - vehicleColorResult = env->NewObject(cls_VehicleColorResult, mid_VehicleColorResult, vehicle_info.vehicle_color_res.score, vehicle_info.vehicle_color_res.index);
435   - }
  390 + jobjectArray vehicleInfoArray = env->NewObjectArray(vec_result[i].info.size(), cls_VehicleInfo, NULL);
  391 + for (int j = 0; j < vec_result[i].info.size(); j++)
  392 + { //vehicleDetectRes
  393 + std::cout << "vehicleDetectRes" << std::endl;
  394 + auto vehicle_info = vec_result[i].info[j];
  395 + 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_);
  396 + jobject vehicleDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_detect_res_syRect_rect, vehicle_info.vehicle_detect_res.score);
  397 + //vehicleWinDetectRes
  398 + 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_);
  399 + jobject vehicleWinDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_win_detect_res_syRect_rect, vehicle_info.vehicle_win_detect_res.score);
  400 + //vehicleBodyDetectRes
  401 + 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_);
  402 + jobject vehicleBodyDetectResult = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, vehicle_body_detect_res_syRect_rect, vehicle_info.vehicle_body_detect_res.score);
  403 + //vehicleColorRes
  404 + jobject vehicleColorResult = NULL;
  405 + if (global_vehicle_color_config == SY_CONFIG_OPEN)
  406 + {
  407 + std::cout << "vehicleColorResult" << std::endl;
  408 + vehicleColorResult = env->NewObject(cls_VehicleColorResult, mid_VehicleColorResult, vehicle_info.vehicle_color_res.score, vehicle_info.vehicle_color_res.index);
  409 + }
436 410  
437   - //vehicleRecgRes //0618 atlas�Ļ�top1�Ľӿ�
438   - jobject vehicleRecgResult = NULL;
439   - if (global_vehicle_recg_config == SY_CONFIG_OPEN)
440   - {
441   - jstring vehicleBrand = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_brand);
442   - jstring vehicleSubbrand = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_subbrand);
443   - jstring vehicleIssueYear = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_issue_year);
444   - jstring vehicleType = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_type);
445   - jstring freightTon = env->NewStringUTF(vehicle_info.vehicle_recg_res.freight_ton);
446   - vehicleRecgResult = env->NewObject(cls_VehicleRecgResult, mid_VehicleRecgResult, vehicleBrand, vehicleSubbrand, vehicleIssueYear, vehicleType, freightTon, vehicle_info.vehicle_recg_res.name_score);
447   - }
  411 + //vehicleRecgRes //0618 atlas�Ļ�top1�Ľӿ�
  412 + jobject vehicleRecgResult = NULL;
  413 + if (global_vehicle_recg_config == SY_CONFIG_OPEN)
  414 + {
  415 + std::cout << "vehicleRecgResult" << std::endl;
  416 + jstring vehicleBrand = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_brand);
  417 + jstring vehicleSubbrand = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_subbrand);
  418 + jstring vehicleIssueYear = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_issue_year);
  419 + jstring vehicleType = env->NewStringUTF(vehicle_info.vehicle_recg_res.vehicle_type);
  420 + jstring freightTon = env->NewStringUTF(vehicle_info.vehicle_recg_res.freight_ton);
  421 + vehicleRecgResult = env->NewObject(cls_VehicleRecgResult, mid_VehicleRecgResult, vehicleBrand, vehicleSubbrand, vehicleIssueYear, vehicleType, freightTon, vehicle_info.vehicle_recg_res.name_score);
  422 + }
448 423  
449   - //vehiclePlateDetRecgRes
450   - jobject vplateResult = NULL;
451   - jobject vehicle_plate_det_recg_res_syRect_rect = NULL;
452   - jobjectArray vplateNumArray = NULL;
453   - if (global_vehicle_plate_det_recg_config == SY_CONFIG_OPEN)
  424 + //vehiclePlateDetRecgRes
  425 + jobject vplateResult = NULL;
  426 + jobject vehicle_plate_det_recg_res_syRect_rect = NULL;
  427 + jobjectArray vplateNumArray = NULL;
  428 + if (global_vehicle_plate_det_recg_config == SY_CONFIG_OPEN)
  429 + {
  430 + std::cout << "vehicle_plate_det_recg_res_syRect_rect" << std::endl;
  431 + 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_);
  432 + vplateNumArray = env->NewObjectArray(PLATENUM, cls_VplateNum, NULL);
  433 + for (size_t k = 0; k < PLATENUM; k++)
454 434 {
455   - 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_);
456   - vplateNumArray = env->NewObjectArray(PLATENUM, cls_VplateNum, NULL);
457   - for (size_t k = 0; k < PLATENUM; k++)
458   - {
459   - jstring character = env->NewStringUTF(vehicle_info.vehicle_plate_det_recg_res.recg[k].character);
460   - jobject vplateNum = env->NewObject(cls_VplateNum, mid_VplateNum, character, vehicle_info.vehicle_plate_det_recg_res.recg[k].maxprob);
461   - env->SetObjectArrayElement(vplateNumArray, k, vplateNum);
462   - }
  435 + jstring character = env->NewStringUTF(vehicle_info.vehicle_plate_det_recg_res.recg[k].character);
  436 + jobject vplateNum = env->NewObject(cls_VplateNum, mid_VplateNum, character, vehicle_info.vehicle_plate_det_recg_res.recg[k].maxprob);
  437 + env->SetObjectArrayElement(vplateNumArray, k, vplateNum);
463 438 }
  439 + }
464 440  
465   - 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);
  441 + 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);
466 442  
467   - //vehiclePendantDetRes
468   - jobject vehiclePendantDetResult = NULL;
469   - if (global_vehicle_pendant_det_config == SY_CONFIG_OPEN)
470   - {
471   - jobjectArray vehiclePendantDetInfoArray = env->NewObjectArray(vehicle_info.vehicle_pendant_det_res.size(), cls_VehiclePendantDetInfo, NULL);
472   - for (size_t m = 0; m < vehicle_info.vehicle_pendant_det_res.size(); m++)
473   - {
474   - auto one_pendant_res = vehicle_info.vehicle_pendant_det_res[m];
475   - jobject vehicle_pendant_det_res_vpd_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, one_pendant_res.rect.left_,
476   - one_pendant_res.rect.top_, one_pendant_res.rect.width_, one_pendant_res.rect.height_);
477   -
478   - 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);
479   -
480   - env->SetObjectArrayElement(vehiclePendantDetInfoArray, m, vehiclePendantDetInfo);
481   - }
482   - vehiclePendantDetResult = env->NewObject(cls_VehiclePendantDetResult, mid_VehiclePendantDetResult, vehiclePendantDetInfoArray, vehicle_info.vehicle_pendant_det_res.size());
483   - }
  443 + std::cout << "vplateResult end" << std::endl;
484 444  
485   - //vehicleIllegalDetRes
486   - jobject vehicleIllegalDetResult = NULL;
487   - if (global_vehicle_illegal_config == SY_CONFIG_OPEN)
  445 + //vehiclePendantDetRes
  446 + jobject vehiclePendantDetResult = NULL;
  447 + if (global_vehicle_pendant_det_config == SY_CONFIG_OPEN)
  448 + {
  449 + jobjectArray vehiclePendantDetInfoArray = env->NewObjectArray(vehicle_info.vehicle_pendant_det_res.size(), cls_VehiclePendantDetInfo, NULL);
  450 + for (size_t m = 0; m < vehicle_info.vehicle_pendant_det_res.size(); m++)
488 451 {
489   - 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);
490   - 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);
491   - 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);
492   - 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);
493   - 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);
494   - 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);
495   - 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);
496   - 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);
497   - 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);
498   - 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);
499   -
500   - jobject vehicleIllegalDetInfo_driver = env->NewObject(cls_VehicleIllegalDetInfo, mid_VehicleIllegalDetInfo, vehicleIllegalDetDetails_driver_belt, vehicleIllegalDetDetails_driver_smoke, vehicleIllegalDetDetails_driver_phone, vehicleIllegalDetDetails_driver_call, vehicleIllegalDetDetails_driver_person);
501   - jobject vehicleIllegalDetInfo_copilot = env->NewObject(cls_VehicleIllegalDetInfo, mid_VehicleIllegalDetInfo, vehicleIllegalDetDetails_copilot_belt, vehicleIllegalDetDetails_copilot_smoke, vehicleIllegalDetDetails_copilot_phone, vehicleIllegalDetDetails_copilot_call, vehicleIllegalDetDetails_copilot_person);
502   - vehicleIllegalDetResult = env->NewObject(cls_VehicleIllegalDetResult, mid_VehicleIllegalDetResult, vehicleIllegalDetInfo_driver, vehicleIllegalDetInfo_copilot);
  452 + auto one_pendant_res = vehicle_info.vehicle_pendant_det_res[m];
  453 + jobject vehicle_pendant_det_res_vpd_res_syRect_rect = env->NewObject(cls_SyRect, mid_SyRect, one_pendant_res.rect.left_,
  454 + one_pendant_res.rect.top_, one_pendant_res.rect.width_, one_pendant_res.rect.height_);
  455 +
  456 + 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);
  457 +
  458 + env->SetObjectArrayElement(vehiclePendantDetInfoArray, m, vehiclePendantDetInfo);
503 459 }
  460 + vehiclePendantDetResult = env->NewObject(cls_VehiclePendantDetResult, mid_VehiclePendantDetResult, vehiclePendantDetInfoArray, vehicle_info.vehicle_pendant_det_res.size());
  461 + }
504 462  
505   - //vehicleFeaRes
506   - jobject vehicleFeaResult = NULL;
507   - if (global_vehicle_feature_config == SY_CONFIG_OPEN)
508   - {
509   - jfloatArray feature = env->NewFloatArray(VA_FEATURESIZE);
510   - env->SetFloatArrayRegion(feature, 0, VA_FEATURESIZE, vehicle_info.vehicle_fea_res.feature);
511   - vehicleFeaResult = env->NewObject(cls_VehicleFeaResult, mid_VehicleFeaResult, feature);
512   - }
  463 + std::cout << "vehiclePendantDetResult" << std::endl;
  464 +
  465 + //vehicleIllegalDetRes
  466 + jobject vehicleIllegalDetResult = NULL;
  467 + if (global_vehicle_illegal_config == SY_CONFIG_OPEN)
  468 + {
  469 + 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);
  470 + 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);
  471 + 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);
  472 + 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);
  473 + 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);
  474 + 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);
  475 + 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);
  476 + 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);
  477 + 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);
  478 + 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);
  479 +
  480 + jobject vehicleIllegalDetInfo_driver = env->NewObject(cls_VehicleIllegalDetInfo, mid_VehicleIllegalDetInfo, vehicleIllegalDetDetails_driver_belt, vehicleIllegalDetDetails_driver_smoke, vehicleIllegalDetDetails_driver_phone, vehicleIllegalDetDetails_driver_call, vehicleIllegalDetDetails_driver_person);
  481 + jobject vehicleIllegalDetInfo_copilot = env->NewObject(cls_VehicleIllegalDetInfo, mid_VehicleIllegalDetInfo, vehicleIllegalDetDetails_copilot_belt, vehicleIllegalDetDetails_copilot_smoke, vehicleIllegalDetDetails_copilot_phone, vehicleIllegalDetDetails_copilot_call, vehicleIllegalDetDetails_copilot_person);
  482 + vehicleIllegalDetResult = env->NewObject(cls_VehicleIllegalDetResult, mid_VehicleIllegalDetResult, vehicleIllegalDetInfo_driver, vehicleIllegalDetInfo_copilot);
  483 + }
  484 +
  485 + //vehicleFeaRes
  486 + jobject vehicleFeaResult = NULL;
  487 + if (global_vehicle_feature_config == SY_CONFIG_OPEN)
  488 + {
  489 + jfloatArray feature = env->NewFloatArray(VA_FEATURESIZE);
  490 + env->SetFloatArrayRegion(feature, 0, VA_FEATURESIZE, vehicle_info.vehicle_fea_res.feature);
  491 + vehicleFeaResult = env->NewObject(cls_VehicleFeaResult, mid_VehicleFeaResult, feature);
  492 + }
513 493  
514   - //MtaResultParam
515   - jobject mtaResult = NULL;
516   - if (global_vehicle_motor_tricycle_analysis_config == SY_CONFIG_OPEN)
  494 + //MtaResultParam
  495 + jobject mtaResult = NULL;
  496 + if (global_vehicle_motor_tricycle_analysis_config == SY_CONFIG_OPEN)
  497 + {
  498 + 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);
  499 + jobject mtaDetailsParam_motor_manned = env->NewObject(cls_MtaDetailsParam, mid_MtaDetailsParam, vehicle_info.mta_res.motor_manned.status, vehicle_info.mta_res.motor_manned.confidence);
  500 + jobject mtaDetailsParam_tricycle_manned = env->NewObject(cls_MtaDetailsParam, mid_MtaDetailsParam, vehicle_info.mta_res.tricycle_manned.status, vehicle_info.mta_res.tricycle_manned.confidence);
  501 + jobject mtaDetailsParam_motor_driver_hs_rect = NULL;
  502 + //if (global_vehicle_motor_hs_output_config == SY_CONFIG_OPEN)
517 503 {
518   - 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);
519   - jobject mtaDetailsParam_motor_manned = env->NewObject(cls_MtaDetailsParam, mid_MtaDetailsParam, vehicle_info.mta_res.motor_manned.status, vehicle_info.mta_res.motor_manned.confidence);
520   - jobject mtaDetailsParam_tricycle_manned = env->NewObject(cls_MtaDetailsParam, mid_MtaDetailsParam, vehicle_info.mta_res.tricycle_manned.status, vehicle_info.mta_res.tricycle_manned.confidence);
521   - jobject mtaDetailsParam_motor_driver_hs_rect = NULL;
522   - //if (global_vehicle_motor_hs_output_config == SY_CONFIG_OPEN)
523   - {
524   - 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_);
525   - 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);
526   - }
527   - mtaResult = env->NewObject(cls_MtaResult, mid_MtaResult, mtaDetailsParam_motor_driver_helmeted, mtaDetailsParam_motor_manned, mtaDetailsParam_tricycle_manned, mtaDetailsParam_motor_driver_hs_rect);
  504 + 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_);
  505 + 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);
528 506 }
  507 + mtaResult = env->NewObject(cls_MtaResult, mid_MtaResult, mtaDetailsParam_motor_driver_helmeted, mtaDetailsParam_motor_manned, mtaDetailsParam_tricycle_manned, mtaDetailsParam_motor_driver_hs_rect);
  508 + }
529 509  
530   - //LorryMannedResultParam
531   - jobject MannedResult = NULL;
532   - if (global_vehicle_manned_config == SY_CONFIG_OPEN)
533   - {
534   - int MannedResHsCount = vehicle_info.manned_res.hs_count;
  510 + //LorryMannedResultParam
  511 + jobject MannedResult = NULL;
  512 + if (global_vehicle_manned_config == SY_CONFIG_OPEN)
  513 + {
  514 + int MannedResHsCount = vehicle_info.manned_res.hs_count;
535 515  
536   - jobjectArray hsDetectResultArray = env->NewObjectArray(MannedResHsCount, cls_VehicleDetectResult, NULL);
  516 + jobjectArray hsDetectResultArray = env->NewObjectArray(MannedResHsCount, cls_VehicleDetectResult, NULL);
537 517 for (size_t m = 0; m < MannedResHsCount; m++)
538   - {
539   - jobject Manned_hsDetect_syRect = env->NewObject(cls_SyRect, mid_SyRect,
540   - vehicle_info.manned_res.hs_rect[m].rect.left_,
541   - vehicle_info.manned_res.hs_rect[m].rect.top_,
542   - vehicle_info.manned_res.hs_rect[m].rect.width_,
543   - vehicle_info.manned_res.hs_rect[m].rect.height_);
544   -
545   - jobject Manned_hsDetect = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, Manned_hsDetect_syRect, vehicle_info.manned_res.hs_rect[m].score);
  518 + {
  519 + jobject Manned_hsDetect_syRect = env->NewObject(cls_SyRect, mid_SyRect,
  520 + vehicle_info.manned_res.hs_rect[m].rect.left_,
  521 + vehicle_info.manned_res.hs_rect[m].rect.top_,
  522 + vehicle_info.manned_res.hs_rect[m].rect.width_,
  523 + vehicle_info.manned_res.hs_rect[m].rect.height_);
546 524  
547   - env->SetObjectArrayElement(hsDetectResultArray, m, Manned_hsDetect);
548   - }
  525 + jobject Manned_hsDetect = env->NewObject(cls_VehicleDetectResult, mid_VehicleDetectResult, Manned_hsDetect_syRect, vehicle_info.manned_res.hs_rect[m].score);
549 526  
550   - MannedResult = env->NewObject(cls_MannedResultParam, mid_MannedResult,
551   - hsDetectResultArray,
552   - MannedResHsCount);
  527 + env->SetObjectArrayElement(hsDetectResultArray, m, Manned_hsDetect);
553 528 }
554 529  
555   - jint type = vehicle_info.type;
556   - jint vpt_type = vehicle_info.vpt_type;
557   - jint rainshed = vehicle_info.rainshed; //是否安装雨棚, 0 有雨棚 1 无雨棚
558   - jfloat rainshed_prob = vehicle_info.rainshed_prob;
559   - jint truck_manned = vehicle_info.truck_manned;
560   - jint motor_manned = vehicle_info.motor_manned;
561   - jint human_upper_color = vehicle_info.human_upper_color;
562   - jint human_lower_color = vehicle_info.human_lower_color;
563   - jint reverse_driving = vehicle_info.reverse_driving; // 0 正常行驶 1 逆行 -1 未知
564   - jint phoning = vehicle_info.phoning; // 骑车打电话
565   - jfloat phoning_prob = vehicle_info.phoning_prob;
566   - jint cross_line = vehicle_info.cross_line; // 压实线, 1 黄实线 2 白实线 -1 其他
567   - jint cross_diversion_line = vehicle_info.cross_diversion_line; // 压导流线 1 压了 -1 未压
568   -
569   - 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);
570   -
571   - env->SetObjectArrayElement(vehicleInfoArray, j, vehicleInfo);
  530 + MannedResult = env->NewObject(cls_MannedResultParam, mid_MannedResult,
  531 + hsDetectResultArray,
  532 + MannedResHsCount);
572 533 }
573 534  
574   - std::cout << "line info " << std::endl;
  535 + std::cout << "type" << std::endl;
  536 + jint type = vehicle_info.type;
  537 + jint vpt_type = vehicle_info.vpt_type;
  538 + jint rainshed = vehicle_info.rainshed; //是否安装雨棚, 0 有雨棚 1 无雨棚
  539 + jfloat rainshed_prob = vehicle_info.rainshed_prob;
  540 + jint truck_manned = vehicle_info.truck_manned;
  541 + jint motor_manned = vehicle_info.motor_manned;
  542 + jint human_upper_color = vehicle_info.human_upper_color;
  543 + jint human_lower_color = vehicle_info.human_lower_color;
  544 + jint reverse_driving = vehicle_info.reverse_driving; // 0 正常行驶 1 逆行 -1 未知
  545 + jint phoning = vehicle_info.phoning; // 骑车打电话
  546 + jfloat phoning_prob = vehicle_info.phoning_prob;
  547 + jint cross_line = vehicle_info.cross_line; // 压实线, 1 黄实线 2 白实线 -1 其他
  548 + jint cross_diversion_line = vehicle_info.cross_diversion_line; // 压导流线 1 压了 -1 未压
575 549  
576   - // 道路标志线
577   - jobjectArray LineInfoArray = env->NewObjectArray(vec_result[i].vec_line.size(), cls_LineInfo, NULL);
578   - for (int j = 0; j < vec_result[i].vec_line.size(); j++)
579   - {
580   - auto line_info = vec_result[i].vec_line[j];
581   - jobjectArray ptArray = env->NewObjectArray(line_info.vec_pt.size(), cls_LineInfo, NULL);
582   - for (int k = 0; k < line_info.vec_pt.size(); k++)
583   - {
584   - auto pt = line_info.vec_pt[k];
585   - jobject line_info_point = env->NewObject(cls_SyPoint, mid_SyPoint, pt.x, pt.y);
586   - env->SetObjectArrayElement(ptArray, k, line_info_point);
587   - }
  550 + 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);
588 551  
589   - jobject one_line_info = env->NewObject(cls_LineInfo, mid_LineInfo, ptArray, line_info.line_type);
  552 + std::cout << "vehicleInfo end" << std::endl;
590 553  
591   - env->SetObjectArrayElement(LineInfoArray, j, one_line_info);
592   - }
  554 + env->SetObjectArrayElement(vehicleInfoArray, j, vehicleInfo);
  555 +
  556 + std::cout << "SetObjectArrayElement" << std::endl;
  557 + }
593 558  
594   - std::cout << "road info " << std::endl;
  559 + std::cout << "line info " << std::endl;
595 560  
596   - // 道路
597   - jobjectArray RoadInfoArray = env->NewObjectArray(vec_result[i].vec_road.size(), cls_SegInfo, NULL);
598   - for (int j = 0; j < vec_result[i].vec_road.size(); j++)
  561 + // 道路标志线
  562 + jobjectArray LineInfoArray = env->NewObjectArray(vec_result[i].vec_line.size(), cls_LineInfo, NULL);
  563 + for (int j = 0; j < vec_result[i].vec_line.size(); j++)
  564 + {
  565 + auto line_info = vec_result[i].vec_line[j];
  566 + jobjectArray ptArray = env->NewObjectArray(line_info.vec_pt.size(), cls_SyPoint, NULL);
  567 + for (int k = 0; k < line_info.vec_pt.size(); k++)
599 568 {
600   - auto road_info = vec_result[i].vec_road[j];
601   - jobjectArray ptArray = env->NewObjectArray(road_info.vec_pt.size(), cls_SyPoint, NULL);
602   - for (int k = 0; k < road_info.vec_pt.size(); k++)
603   - {
604   - auto pt = road_info.vec_pt[k];
605   - jobject road_info_point = env->NewObject(cls_SyPoint, mid_SyPoint, pt.x, pt.y);
606   - env->SetObjectArrayElement(ptArray, k, road_info_point);
607   - }
  569 + auto pt = line_info.vec_pt[k];
  570 + jobject line_info_point = env->NewObject(cls_SyPoint, mid_SyPoint, pt.x, pt.y);
  571 + env->SetObjectArrayElement(ptArray, k, line_info_point);
  572 + }
608 573  
609   - jobject one_road_info = env->NewObject(cls_SegInfo, mid_SegInfo, ptArray, road_info.seg_type);
  574 + jobject one_line_info = env->NewObject(cls_LineInfo, mid_LineInfo, ptArray, line_info.line_type);
610 575  
611   - env->SetObjectArrayElement(RoadInfoArray, j, one_road_info);
  576 + env->SetObjectArrayElement(LineInfoArray, j, one_line_info);
  577 + }
  578 +
  579 + std::cout << "road info " << std::endl;
  580 +
  581 + // 道路
  582 + jobjectArray RoadInfoArray = env->NewObjectArray(vec_result[i].vec_road.size(), cls_SegInfo, NULL);
  583 + for (int j = 0; j < vec_result[i].vec_road.size(); j++)
  584 + {
  585 + auto road_info = vec_result[i].vec_road[j];
  586 + jobjectArray ptArray = env->NewObjectArray(road_info.vec_pt.size(), cls_SyPoint, NULL);
  587 + for (int k = 0; k < road_info.vec_pt.size(); k++)
  588 + {
  589 + auto pt = road_info.vec_pt[k];
  590 + jobject road_info_point = env->NewObject(cls_SyPoint, mid_SyPoint, pt.x, pt.y);
  591 + env->SetObjectArrayElement(ptArray, k, road_info_point);
612 592 }
613 593  
614   - jobject vehicleAnalysisResult = env->NewObject(cls_vehicleAnalysisResult, mid_vehicleAnalysisResult, vehicleInfoArray, LineInfoArray, RoadInfoArray, vec_result[i].info.size());
615   - env->SetObjectArrayElement(vehicleAnalysisResultParams, i, vehicleAnalysisResult);
  594 + jobject one_road_info = env->NewObject(cls_SegInfo, mid_SegInfo, ptArray, road_info.seg_type);
  595 +
  596 + env->SetObjectArrayElement(RoadInfoArray, j, one_road_info);
616 597 }
617   -
  598 +
  599 + std::cout << "add new " << std::endl;
  600 +
  601 + jobject vehicleAnalysisResult = env->NewObject(cls_vehicleAnalysisResult, mid_vehicleAnalysisResult, vehicleInfoArray, LineInfoArray, RoadInfoArray, vec_result[i].info.size());
  602 + env->SetObjectArrayElement(vehicleAnalysisResultParams, i, vehicleAnalysisResult);
618 603 }
619 604  
620 605 ACL_CALL(aclrtSetCurrentContext(ctx), ACL_ERROR_NONE, FAILED);
... ... @@ -623,7 +608,7 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI
623 608 (void) aclrtDestroyStream(stream);
624 609 aclrtDestroyContext(ctx);
625 610  
626   - return ret;
  611 + return SUCCESS;
627 612 }
628 613  
629 614 /*
... ... @@ -682,31 +667,4 @@ sy_format getImgByteType(int type)
682 667 break;
683 668 }
684 669 return syFormat;
685   -}
686   -
687   -// //curl writefunction to be passed as a parameter
688   -// // we can't ever expect to get the whole image in one piece,
689   -// // every router / hub is entitled to fragment it into parts
690   -// // (like 1-8k at a time),
691   -// // so insert the part at the end of our stream.
692   -// size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata)
693   -// {
694   -// vector<uchar> *stream = (vector<uchar>*)userdata;
695   -// size_t count = size * nmemb;
696   -// stream->insert(stream->end(), ptr, ptr + count);
697   -// return count;
698   -// }
699   -
700   -// //function to retrieve the image as cv::Mat data type
701   -// cv::Mat curlImg(const char *img_url, int timeout = 10)
702   -// {
703   -// vector<uchar> stream;
704   -// CURL *curl = curl_easy_init();
705   -// curl_easy_setopt(curl, CURLOPT_URL, img_url); //the img url
706   -// curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); // pass the writefunction
707   -// curl_easy_setopt(curl, CURLOPT_WRITEDATA, &stream); // pass the stream ptr to the writefunction
708   -// curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout); // timeout if curl_easy hangs,
709   -// CURLcode res = curl_easy_perform(curl); // start curl
710   -// curl_easy_cleanup(curl); // cleanup
711   -// return cv::imdecode(stream, -1); // 'keep-as-is'
712   -// }
  670 +}
713 671 \ No newline at end of file
... ...