diff --git a/src/nv_infer_server_manager.cpp b/src/nv_infer_server_manager.cpp index 2570184..b864355 100644 --- a/src/nv_infer_server_manager.cpp +++ b/src/nv_infer_server_manager.cpp @@ -371,32 +371,17 @@ void NvInferServerManager::update_frame_with_face_body_meta( imprecise_face_obj_meta->text_params; /* Assign bounding box coordinates. */ rect_params_imprecise_face.left = - int(data[index * 57 + 0] * MUXER_OUTPUT_WIDTH / PGIE_NET_WIDTH); + (data[index * 57 + 0] * MUXER_OUTPUT_WIDTH / PGIE_NET_WIDTH); rect_params_imprecise_face.top = - int(data[index * 57 + 1] * MUXER_OUTPUT_HEIGHT / PGIE_NET_HEIGHT); - float x_shoulder; - float y_shoulder; - if (data[index * 57 + 21] > data[index * 57 + 24]) { - x_shoulder = data[index * 57 + 21]; - y_shoulder = data[index * 57 + 22]; - } else { - x_shoulder = data[index * 57 + 24]; - y_shoulder = data[index * 57 + 25]; - } + (data[index * 57 + 1] * MUXER_OUTPUT_HEIGHT / PGIE_NET_HEIGHT); + Point2D left_down_shoulder = + find_left_down_corner_shoulder(data, index); rect_params_imprecise_face.width = - int((x_shoulder - data[index * 57 + 0]) * MUXER_OUTPUT_WIDTH / - PGIE_NET_WIDTH); + ((left_down_shoulder.x - data[index * 57 + 0]) * + MUXER_OUTPUT_WIDTH / PGIE_NET_WIDTH); rect_params_imprecise_face.height = - int((y_shoulder - data[index * 57 + 1]) * MUXER_OUTPUT_HEIGHT / - PGIE_NET_HEIGHT); - - // std::cout << "nvinferserver imprecise face for x = " << - // rect_params_imprecise_face.left - // << " y = " << rect_params_imprecise_face.top - // << " w = " << rect_params_imprecise_face.width - // << " h = " << rect_params_imprecise_face.height - // << " score = " << - // imprecise_face_obj_meta->confidence << std::endl; + ((left_down_shoulder.y - data[index * 57 + 1]) * + MUXER_OUTPUT_HEIGHT / PGIE_NET_HEIGHT); /* Border of width 3. */ rect_params_imprecise_face.border_width = 3; @@ -439,15 +424,15 @@ void NvInferServerManager::update_frame_with_face_body_meta( NvOSD_TextParams &text_params_body = body_obj_meta->text_params; /* Assign bounding box coordinates. */ rect_params_body.left = - int(data[index * 57 + 0] * MUXER_OUTPUT_WIDTH / PGIE_NET_WIDTH); + (data[index * 57 + 0] * MUXER_OUTPUT_WIDTH / PGIE_NET_WIDTH); rect_params_body.top = - int(data[index * 57 + 1] * MUXER_OUTPUT_HEIGHT / PGIE_NET_HEIGHT); + (data[index * 57 + 1] * MUXER_OUTPUT_HEIGHT / PGIE_NET_HEIGHT); rect_params_body.width = - int((data[index * 57 + 2] - data[index * 57 + 0]) * - MUXER_OUTPUT_WIDTH / PGIE_NET_WIDTH); + ((data[index * 57 + 2] - data[index * 57 + 0]) * + MUXER_OUTPUT_WIDTH / PGIE_NET_WIDTH); rect_params_body.height = - int((data[index * 57 + 3] - data[index * 57 + 1]) * - MUXER_OUTPUT_HEIGHT / PGIE_NET_HEIGHT); + ((data[index * 57 + 3] - data[index * 57 + 1]) * + MUXER_OUTPUT_HEIGHT / PGIE_NET_HEIGHT); /* Border of width 3. */ rect_params_body.border_width = 3; @@ -480,6 +465,21 @@ void NvInferServerManager::update_frame_with_face_body_meta( } } +NvInferServerManager::Point2D +NvInferServerManager::find_left_down_corner_shoulder(float *data, uint index) { + Point2D left_down_shoulder; + // float x_shoulder; + // float y_shoulder; + if (data[index * 57 + 21] > data[index * 57 + 24]) { + left_down_shoulder.x = data[index * 57 + 21]; + left_down_shoulder.y = data[index * 57 + 22]; + } else { + left_down_shoulder.x = data[index * 57 + 24]; + left_down_shoulder.y = data[index * 57 + 25]; + } + return left_down_shoulder; +} + // add custom infromation to metadata by: set_metadata_ptr, copy_user_meta, // release_user_meta void *NvInferServerManager::set_metadata_ptr(float *arr) { diff --git a/src/nv_infer_server_manager.hpp b/src/nv_infer_server_manager.hpp index 9c2a077..ecfe530 100644 --- a/src/nv_infer_server_manager.hpp +++ b/src/nv_infer_server_manager.hpp @@ -12,6 +12,13 @@ class NvInferServerManager { private: public: + struct Point2D { + double x; // X coordinate + double y; // Y coordinate + + // Constructor + Point2D(double x_val = 0.0, double y_val = 0.0) : x(x_val), y(y_val) {} + }; GstElement *primary_detector = NULL; int pgie_batch_size; @@ -45,4 +52,5 @@ class NvInferServerManager { NvDsFrameMeta *); static void extract_tensor_metadata(NvDsUserMeta *, NvDsInferNetworkInfo, NvDsBatchMeta *, NvDsFrameMeta *); + static Point2D find_left_down_corner_shoulder(float *, uint); }; \ No newline at end of file