Recator calculating left down shoulder

This commit is contained in:
Barzan Hayati 2025-08-24 21:07:40 +00:00
parent 3b9ff27524
commit a6a1a5196c
2 changed files with 37 additions and 29 deletions

View File

@ -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) {

View File

@ -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);
};