From cee436d581d447b5c880b6b35718a157dc58abac Mon Sep 17 00:00:00 2001 From: cmhu <2657262686@qq.com> Date: Mon, 13 Jan 2025 16:04:27 +0800 Subject: [PATCH] 完成道路信息返回 --- jni/VehicleNativeInterface.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 9 deletions(-) diff --git a/jni/VehicleNativeInterface.cpp b/jni/VehicleNativeInterface.cpp index f2a4316..9223957 100644 --- a/jni/VehicleNativeInterface.cpp +++ b/jni/VehicleNativeInterface.cpp @@ -329,6 +329,9 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI // 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"); @@ -349,16 +352,16 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI 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_SyPoint = env->FindClass("com/objecteye/pojo/common/SyPointParam");//wh20210601������pose��� + //jclass cls_VehiclePoseResultParam = env->FindClass("com/objecteye/pojo/vehicle/VehiclePoseResultParam");//wh20210601������pose��� - //cout << "1111111111111111111" << endl; + jclass cls_SyPoint = env->FindClass("com/objecteye/pojo/common/SyPointParam"); //getmethodId - jmethodID mid_vehicleAnalysisResult = env->GetMethodID(cls_vehicleAnalysisResult, "", "([Lcom/objecteye/pojo/vehicle/VehicleInfoParam;I)V"); + 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)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;I;I;I;I;I;I;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"); @@ -382,17 +385,18 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI //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_SyPoint = env->GetMethodID(cls_SyPoint, "", "(II)V");//wh20210601������pose��� //jmethodID mid_VehiclePoseResult = env->GetMethodID(cls_VehiclePoseResultParam, "", "([Lcom/objecteye/pojo/common/SyPointParam;[F[FDDD)V"); - - //cout << "2222222222222222222" << endl; + + 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 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]; @@ -546,7 +550,43 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI env->SetObjectArrayElement(vehicleInfoArray, j, vehicleInfo); } - jobject vehicleAnalysisResult = env->NewObject(cls_vehicleAnalysisResult, mid_vehicleAnalysisResult, vehicleInfoArray, vec_result[i].info.size()); + // 道路标志线 + 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 one_line_info = env->NewObject(cls_LineInfo, mid_LineInfo, ptArray, line_info.line_type); + + env->SetObjectArrayElement(LineInfoArray, j, one_line_info); + } + + // 道路 + 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 one_road_info = env->NewObject(cls_SegInfo, mid_SegInfo, ptArray, road_info.seg_type); + + env->SetObjectArrayElement(RoadInfoArray, j, one_road_info); + } + + jobject vehicleAnalysisResult = env->NewObject(cls_vehicleAnalysisResult, mid_vehicleAnalysisResult, vehicleInfoArray, LineInfoArray, RoadInfoArray, vec_result[i].info.size()); env->SetObjectArrayElement(vehicleAnalysisResultParams, i, vehicleAnalysisResult); } -- libgit2 0.21.4