Fix encode related fullframe body face images
This commit is contained in:
parent
434f3c79ec
commit
c0aeaec9c2
@ -1038,91 +1038,50 @@ NvOSD_RectParams *FaceNvInferServerManager::allign_postprocess(
|
|||||||
float y0 = parent_bbox.top;
|
float y0 = parent_bbox.top;
|
||||||
float w0 = parent_bbox.width;
|
float w0 = parent_bbox.width;
|
||||||
float h0 = parent_bbox.height;
|
float h0 = parent_bbox.height;
|
||||||
// std::cout << "x = " << x0
|
|
||||||
// << " y = " << y0
|
|
||||||
// << " w = " << w0
|
|
||||||
// << " h = " << h0
|
|
||||||
// << std::endl;
|
|
||||||
float scale = std::min(target_w / w0, target_h / h0);
|
float scale = std::min(target_w / w0, target_h / h0);
|
||||||
int new_w = int(w0 * scale);
|
int new_w = int(w0 * scale);
|
||||||
int new_h = int(h0 * scale);
|
int new_h = int(h0 * scale);
|
||||||
int pad_w = target_w - new_w;
|
int pad_w = target_w - new_w;
|
||||||
int pad_h = target_h - new_h;
|
int pad_h = target_h - new_h;
|
||||||
|
|
||||||
// std::cout << "scale = " << scale
|
|
||||||
// << " new_w = " << new_w
|
|
||||||
// << " new_h = " << new_h
|
|
||||||
// << " pad_w = " << pad_w
|
|
||||||
// << " pad_h = " << pad_h
|
|
||||||
// << std::endl;
|
|
||||||
int left = (int)pad_w / 2;
|
int left = (int)pad_w / 2;
|
||||||
// int right = pad_w - left;
|
// int right = pad_w - left;
|
||||||
int top = (int)pad_h / 2;
|
int top = (int)pad_h / 2;
|
||||||
// int bottom = pad_h - top;
|
// int bottom = pad_h - top;
|
||||||
// int _pad =(left, top);
|
// int _pad =(left, top);
|
||||||
// int _scale = scale;
|
// int _scale = scale;
|
||||||
// std::cout << "left = " << left
|
|
||||||
// << " top = " << top
|
|
||||||
// << std::endl;
|
|
||||||
|
|
||||||
float x1n = numpy_clip(face_location[0], 0.0f, 1.0f);
|
float x1n = numpy_clip(face_location[0], 0.0f, 1.0f);
|
||||||
float y1n = numpy_clip(face_location[1], 0.0f, 1.0f);
|
float y1n = numpy_clip(face_location[1], 0.0f, 1.0f);
|
||||||
float x2n = numpy_clip(face_location[2], 0.0f, 1.0f);
|
float x2n = numpy_clip(face_location[2], 0.0f, 1.0f);
|
||||||
float y2n = numpy_clip(face_location[3], 0.0f, 1.0f);
|
float y2n = numpy_clip(face_location[3], 0.0f, 1.0f);
|
||||||
|
|
||||||
// std::cout << "x1n = " << x1n
|
|
||||||
// << " y1n = " << y1n
|
|
||||||
// << " x2n = " << x2n
|
|
||||||
// << " y2n = " << y2n
|
|
||||||
// << std::endl;
|
|
||||||
|
|
||||||
float x1_p = x1n * target_w;
|
float x1_p = x1n * target_w;
|
||||||
float y1_p = y1n * target_h;
|
float y1_p = y1n * target_h;
|
||||||
float x2_p = x2n * target_w;
|
float x2_p = x2n * target_w;
|
||||||
float y2_p = y2n * target_h;
|
float y2_p = y2n * target_h;
|
||||||
// std::cout << "x1_p = " << x1_p
|
|
||||||
// << " y1_p = " << y1_p
|
|
||||||
// << " x2_p = " << x2_p
|
|
||||||
// << " y2_p = " << y2_p
|
|
||||||
// << std::endl;
|
|
||||||
|
|
||||||
int pad_x = left;
|
int pad_x = left;
|
||||||
int pad_y = top;
|
int pad_y = top;
|
||||||
// std::cout << "pad_x = " << pad_x
|
|
||||||
// << " pad_y = " << pad_y
|
|
||||||
// << std::endl;
|
|
||||||
float x1 = (x1_p - pad_x) / scale;
|
float x1 = (x1_p - pad_x) / scale;
|
||||||
float y1 = (y1_p - pad_y) / scale;
|
float y1 = (y1_p - pad_y) / scale;
|
||||||
float x2 = (x2_p - pad_x) / scale;
|
float x2 = (x2_p - pad_x) / scale;
|
||||||
float y2 = (y2_p - pad_y) / scale;
|
float y2 = (y2_p - pad_y) / scale;
|
||||||
// std::cout << "x1 = " << x1
|
|
||||||
// << " y1 = " << y1
|
|
||||||
// << " x2 = " << x2
|
|
||||||
// << " y2 = " << y2
|
|
||||||
// << std::endl;
|
|
||||||
|
|
||||||
x1 += x0;
|
x1 += x0;
|
||||||
y1 += y0;
|
y1 += y0;
|
||||||
x2 += x0;
|
x2 += x0;
|
||||||
y2 += y0;
|
y2 += y0;
|
||||||
// std::cout << "x1 = " << x1
|
|
||||||
// << " y1 = " << y1
|
|
||||||
// << " x2 = " << x2
|
|
||||||
// << " y2 = " << y2
|
|
||||||
// << std::endl;
|
|
||||||
|
|
||||||
NvOSD_RectParams *updated_bbox = new NvOSD_RectParams();
|
NvOSD_RectParams *updated_bbox = new NvOSD_RectParams();
|
||||||
updated_bbox->left = x1;
|
updated_bbox->left = x1;
|
||||||
updated_bbox->top = y1;
|
updated_bbox->top = y1;
|
||||||
updated_bbox->width = x2 - x1;
|
updated_bbox->width = x2 - x1;
|
||||||
updated_bbox->height = y2 - y1;
|
updated_bbox->height = y2 - y1;
|
||||||
// std::cout << "x = " << updated_bbox->left
|
|
||||||
// << " y = " << updated_bbox->top
|
|
||||||
// << " w = " << updated_bbox->width
|
|
||||||
// << " h = " << updated_bbox->height
|
|
||||||
// << std::endl;
|
|
||||||
// box = [int(x1), int(y1), int(x2), int(y2)];
|
// box = [int(x1), int(y1), int(x2), int(y2)];
|
||||||
// std::quick_exit(0);
|
|
||||||
return updated_bbox;
|
return updated_bbox;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1135,7 +1094,6 @@ void FaceNvInferServerManager::add_face_body(int object_id, float face_score) {
|
|||||||
if (((*iter).face_score > face_score)) {
|
if (((*iter).face_score > face_score)) {
|
||||||
// std::cout<<(*iter).face_score;
|
// std::cout<<(*iter).face_score;
|
||||||
(*iter).face_score = face_score;
|
(*iter).face_score = face_score;
|
||||||
// std::cout<<" "<<(*iter).face_score<<std::endl;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1172,19 +1130,8 @@ void FaceNvInferServerManager::encode_objects_attach_meta(
|
|||||||
// }
|
// }
|
||||||
/*Main Function Call */
|
/*Main Function Call */
|
||||||
|
|
||||||
// bool nvds_obj_enc_process (NvDsObjEncCtxHandle, NvDsObjEncUsrArgs *,
|
|
||||||
// NvBufSurface *, NvDsObjectMeta *, NvDsFrameMeta *);
|
|
||||||
nvds_obj_enc_process(static_cast<NvDsObjEncCtxHandle>(ctx), &objData,
|
nvds_obj_enc_process(static_cast<NvDsObjEncCtxHandle>(ctx), &objData,
|
||||||
ip_surf, obj_meta, frame_meta);
|
ip_surf, obj_meta, frame_meta);
|
||||||
if (obj_meta->unique_component_id == 1) {
|
|
||||||
std::cout << "obj_meta->unique_component_id = "
|
|
||||||
<< obj_meta->unique_component_id
|
|
||||||
<< " obj_meta->rect_params.width = "
|
|
||||||
<< obj_meta->rect_params.width
|
|
||||||
<< " obj_meta->rect_params.height = "
|
|
||||||
<< obj_meta->rect_params.height << std::endl;
|
|
||||||
std::quick_exit(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FaceNvInferServerManager::encode_full_frame_attach_meta(
|
void FaceNvInferServerManager::encode_full_frame_attach_meta(
|
||||||
@ -1262,6 +1209,29 @@ bool FaceNvInferServerManager::all_zero(const float *data, size_t size) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Collect all BODY objects in the frame and return a map
|
||||||
|
* from object_id to NvDsObjectMeta*.
|
||||||
|
*
|
||||||
|
* @param frame_meta Frame metadata containing objects
|
||||||
|
* @param body_component_id unique_component_id used for BODY objects (e.g., 1)
|
||||||
|
* @return std::unordered_map<guint, NvDsObjectMeta*> map of body objects
|
||||||
|
*/
|
||||||
|
std::unordered_map<guint, NvDsObjectMeta *>
|
||||||
|
FaceNvInferServerManager::collect_body_objects(NvDsFrameMeta *frame_meta,
|
||||||
|
gint body_component_id = 1) {
|
||||||
|
std::unordered_map<guint, NvDsObjectMeta *> body_map;
|
||||||
|
for (NvDsMetaList *l_obj = frame_meta->obj_meta_list; l_obj != nullptr;
|
||||||
|
l_obj = l_obj->next) {
|
||||||
|
NvDsObjectMeta *obj = static_cast<NvDsObjectMeta *>(l_obj->data);
|
||||||
|
if (!obj) continue;
|
||||||
|
if (obj->unique_component_id == body_component_id) {
|
||||||
|
body_map[obj->object_id] = obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return body_map;
|
||||||
|
}
|
||||||
|
|
||||||
/* This is the buffer probe function that we have registered on the sink pad
|
/* This is the buffer probe function that we have registered on the sink pad
|
||||||
* of the tiler element. All SGIE infer elements in the pipeline shall attach
|
* of the tiler element. All SGIE infer elements in the pipeline shall attach
|
||||||
* their NvDsInferTensorMeta to each object's metadata of each frame, here we
|
* their NvDsInferTensorMeta to each object's metadata of each frame, here we
|
||||||
@ -1294,52 +1264,26 @@ GstPadProbeReturn FaceNvInferServerManager::sgie_pad_buffer_probe(
|
|||||||
gst_buffer_get_nvds_batch_meta(GST_BUFFER(info->data));
|
gst_buffer_get_nvds_batch_meta(GST_BUFFER(info->data));
|
||||||
if (!batch_meta) return GST_PAD_PROBE_OK;
|
if (!batch_meta) return GST_PAD_PROBE_OK;
|
||||||
bool is_zero_embedding_vector = false;
|
bool is_zero_embedding_vector = false;
|
||||||
bool current_full_frame_is_captured = false;
|
// bool current_full_frame_is_captured = false;
|
||||||
|
bool find_body = false;
|
||||||
|
|
||||||
/* Iterate each frame metadata in batch */
|
/* Iterate each frame metadata in batch */
|
||||||
for (NvDsMetaList *l_frame = batch_meta->frame_meta_list; l_frame != NULL;
|
for (NvDsMetaList *l_frame = batch_meta->frame_meta_list; l_frame != NULL;
|
||||||
l_frame = l_frame->next) {
|
l_frame = l_frame->next) {
|
||||||
NvDsFrameMeta *frame_meta = (NvDsFrameMeta *)l_frame->data;
|
NvDsFrameMeta *frame_meta = (NvDsFrameMeta *)l_frame->data;
|
||||||
current_full_frame_is_captured = false;
|
// current_full_frame_is_captured = false;
|
||||||
|
|
||||||
|
std::unordered_map<guint, NvDsObjectMeta *> body_map =
|
||||||
|
collect_body_objects(frame_meta);
|
||||||
|
|
||||||
/* Iterate object metadata in frame */
|
/* Iterate object metadata in frame */
|
||||||
for (NvDsMetaList *l_obj = frame_meta->obj_meta_list; l_obj != NULL;
|
for (NvDsMetaList *l_obj = frame_meta->obj_meta_list; l_obj != NULL;
|
||||||
l_obj = l_obj->next) {
|
l_obj = l_obj->next) {
|
||||||
NvDsObjectMeta *obj_meta = (NvDsObjectMeta *)l_obj->data;
|
NvDsObjectMeta *obj_meta = (NvDsObjectMeta *)l_obj->data;
|
||||||
|
|
||||||
if (obj_meta->unique_component_id == 1 &&
|
if (!obj_meta) continue;
|
||||||
obj_meta->obj_user_meta_list != NULL) {
|
|
||||||
// body object obj_user_meta_list list is empty so
|
|
||||||
// for loop : Iterate user metadata in object to search SGIE's
|
|
||||||
// tensor data could not execute.
|
|
||||||
std::cout << "obj_meta->unique_component_id = "
|
|
||||||
<< obj_meta->unique_component_id
|
|
||||||
<< " obj_meta->rect_params.width = "
|
|
||||||
<< obj_meta->rect_params.width
|
|
||||||
<< " obj_meta->rect_params.height = "
|
|
||||||
<< obj_meta->rect_params.height << std::endl;
|
|
||||||
}
|
|
||||||
// if (obj_meta->unique_component_id == 2) {
|
|
||||||
// body = obj_meta->parent;
|
|
||||||
|
|
||||||
// // if(body)
|
// 1 , 41 for face 0 for body
|
||||||
// // {
|
|
||||||
// // std::cout<<"body->class_id = "<<body->class_id
|
|
||||||
// // << " body->unique_component_id =
|
|
||||||
// "<<body->unique_component_id<<std::endl;
|
|
||||||
// // if (body->unique_component_id==1){
|
|
||||||
// // std::quick_exit(0);
|
|
||||||
// // }
|
|
||||||
// // }
|
|
||||||
|
|
||||||
// }
|
|
||||||
// (void)parent;
|
|
||||||
// if (obj_meta->unique_component_id !=
|
|
||||||
// IMPRECISE_FACE_COMPONENT_ID){
|
|
||||||
// continue;
|
|
||||||
// }
|
|
||||||
// 1 , 41 for face
|
|
||||||
// 0 for body
|
|
||||||
if (obj_meta->class_id == 1) {
|
if (obj_meta->class_id == 1) {
|
||||||
if (obj_meta->rect_params.width >
|
if (obj_meta->rect_params.width >
|
||||||
obj_meta->rect_params.height) {
|
obj_meta->rect_params.height) {
|
||||||
@ -1362,13 +1306,7 @@ GstPadProbeReturn FaceNvInferServerManager::sgie_pad_buffer_probe(
|
|||||||
// body_obj->rect_params.height);
|
// body_obj->rect_params.height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// else{
|
|
||||||
// // std::cout<<"obj_meta->class_id ="
|
|
||||||
// <<obj_meta->class_id<<std::endl; continue;
|
|
||||||
// }
|
|
||||||
// std::cout<<"obj_meta->class_id = "<<obj_meta->class_id
|
|
||||||
// << " obj_meta->unique_component_id =
|
|
||||||
// "<<obj_meta->unique_component_id<<std::endl;
|
|
||||||
/* Iterate user metadata in object to search SGIE's tensor data */
|
/* Iterate user metadata in object to search SGIE's tensor data */
|
||||||
for (NvDsMetaList *l_user = obj_meta->obj_user_meta_list;
|
for (NvDsMetaList *l_user = obj_meta->obj_user_meta_list;
|
||||||
l_user != NULL; l_user = l_user->next) {
|
l_user != NULL; l_user = l_user->next) {
|
||||||
@ -1381,7 +1319,6 @@ GstPadProbeReturn FaceNvInferServerManager::sgie_pad_buffer_probe(
|
|||||||
NvDsInferTensorMeta *meta =
|
NvDsInferTensorMeta *meta =
|
||||||
(NvDsInferTensorMeta *)user_meta->user_meta_data;
|
(NvDsInferTensorMeta *)user_meta->user_meta_data;
|
||||||
|
|
||||||
// from here
|
|
||||||
// std::cout << "meta->num_output_layers: "
|
// std::cout << "meta->num_output_layers: "
|
||||||
// << meta->num_output_layers << std::endl;
|
// << meta->num_output_layers << std::endl;
|
||||||
for (unsigned int i = 0; i < meta->num_output_layers; i++) {
|
for (unsigned int i = 0; i < meta->num_output_layers; i++) {
|
||||||
@ -1498,25 +1435,15 @@ GstPadProbeReturn FaceNvInferServerManager::sgie_pad_buffer_probe(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (score_face > threshold_face_detection) {
|
if (score_face > threshold_face_detection) {
|
||||||
// std::cout<<"obj_meta->rect_params left =
|
|
||||||
// "<<obj_meta->rect_params.left
|
|
||||||
// <<" top = "<<obj_meta->rect_params.top
|
|
||||||
// <<" width = "<<obj_meta->rect_params.width
|
|
||||||
// <<" height =
|
|
||||||
// "<<obj_meta->rect_params.height<<std::endl;
|
|
||||||
NvOSD_RectParams *updated_bbox = allign_postprocess(
|
NvOSD_RectParams *updated_bbox = allign_postprocess(
|
||||||
obj_meta->rect_params, face_location);
|
obj_meta->rect_params, face_location);
|
||||||
// std::cout<<"updated_bbox left = "<<updated_bbox->left
|
|
||||||
// <<" top = "<<updated_bbox->top
|
|
||||||
// <<" width = "<<updated_bbox->width
|
|
||||||
// <<" height = "<<updated_bbox->height<<std::endl;
|
|
||||||
// (void)updated_bbox;
|
|
||||||
|
|
||||||
NvDsObjectMeta *final_face_obj =
|
NvDsObjectMeta *final_face_obj =
|
||||||
nvds_acquire_obj_meta_from_pool(batch_meta);
|
nvds_acquire_obj_meta_from_pool(batch_meta);
|
||||||
|
|
||||||
strncpy(final_face_obj->obj_label, "FINAL_FACE",
|
strncpy(
|
||||||
sizeof(final_face_obj->obj_label) - 1);
|
final_face_obj->obj_label, sgie_class_str[0],
|
||||||
|
sizeof(final_face_obj->obj_label) - 1); //"FINAL_FACE"
|
||||||
final_face_obj
|
final_face_obj
|
||||||
->obj_label[sizeof(final_face_obj->obj_label) - 1] =
|
->obj_label[sizeof(final_face_obj->obj_label) - 1] =
|
||||||
'\0'; // Ensure null termination
|
'\0'; // Ensure null termination
|
||||||
@ -1525,12 +1452,7 @@ GstPadProbeReturn FaceNvInferServerManager::sgie_pad_buffer_probe(
|
|||||||
final_face_obj->confidence = score_face;
|
final_face_obj->confidence = score_face;
|
||||||
|
|
||||||
add_face_body(obj_meta->object_id, score_face);
|
add_face_body(obj_meta->object_id, score_face);
|
||||||
// std::cout << "body_obj->object_id = " <<
|
// obj_meta->object_id = UNTRACKED_OBJECT_ID;
|
||||||
// body_obj->object_id
|
|
||||||
// << " score_face= "<<score_face<<std::endl;
|
|
||||||
// std::cout<< " size face_body_list = " <<
|
|
||||||
// face_body_list.size() << std::endl; obj_meta->object_id =
|
|
||||||
// UNTRACKED_OBJECT_ID;
|
|
||||||
final_face_obj->class_id = 1;
|
final_face_obj->class_id = 1;
|
||||||
final_face_obj->object_id = obj_meta->object_id;
|
final_face_obj->object_id = obj_meta->object_id;
|
||||||
|
|
||||||
@ -1550,14 +1472,6 @@ GstPadProbeReturn FaceNvInferServerManager::sgie_pad_buffer_probe(
|
|||||||
// int(obj_meta->rect_params.height *
|
// int(obj_meta->rect_params.height *
|
||||||
// MUXER_OUTPUT_HEIGHT / FACE_NET_HEIGHT);
|
// MUXER_OUTPUT_HEIGHT / FACE_NET_HEIGHT);
|
||||||
|
|
||||||
// std::cout << "nvinferserver second for x = " <<
|
|
||||||
// rect_params.left
|
|
||||||
// << " y = " << rect_params.top
|
|
||||||
// << " w = " << rect_params.width
|
|
||||||
// << " h = " << rect_params.height
|
|
||||||
// << " score = " << obj_meta->confidence <<
|
|
||||||
// std::endl;
|
|
||||||
|
|
||||||
/* Border of width 3. */
|
/* Border of width 3. */
|
||||||
rect_params.border_width = 3;
|
rect_params.border_width = 3;
|
||||||
rect_params.has_bg_color = 0;
|
rect_params.has_bg_color = 0;
|
||||||
@ -1596,16 +1510,38 @@ GstPadProbeReturn FaceNvInferServerManager::sgie_pad_buffer_probe(
|
|||||||
// nvds_add_obj_meta_to_frame(frame_meta, final_face_obj,
|
// nvds_add_obj_meta_to_frame(frame_meta, final_face_obj,
|
||||||
// NULL);
|
// NULL);
|
||||||
if (is_zero_embedding_vector == false) {
|
if (is_zero_embedding_vector == false) {
|
||||||
if (current_full_frame_is_captured == false) {
|
// encode_objects_attach_meta(ctx, ip_surf, frame_meta,
|
||||||
|
// obj_meta);
|
||||||
|
|
||||||
|
// // collect all body objects
|
||||||
|
// auto body_map = collect_body_objects(frame_meta);
|
||||||
|
// // encode body corresponding to this object
|
||||||
|
find_body = false;
|
||||||
|
auto it = body_map.find(obj_meta->object_id);
|
||||||
|
if (it != body_map.end()) {
|
||||||
|
NvDsObjectMeta *body_meta = it->second;
|
||||||
|
encode_objects_attach_meta(ctx, ip_surf, frame_meta,
|
||||||
|
body_meta);
|
||||||
|
find_body = true;
|
||||||
|
} else {
|
||||||
|
// body object not found for this object_id
|
||||||
|
// std::cout << "No body object found for object_id
|
||||||
|
// = " << obj_meta->object_id << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (find_body == true) {
|
||||||
|
// if (current_full_frame_is_captured == false) {
|
||||||
|
// encode_full_frame_attach_meta(ctx, ip_surf,
|
||||||
|
// frame_meta);
|
||||||
|
// current_full_frame_is_captured = true;
|
||||||
|
// }
|
||||||
encode_full_frame_attach_meta(ctx, ip_surf,
|
encode_full_frame_attach_meta(ctx, ip_surf,
|
||||||
frame_meta);
|
frame_meta);
|
||||||
current_full_frame_is_captured = true;
|
|
||||||
}
|
|
||||||
encode_objects_attach_meta(ctx, ip_surf, frame_meta,
|
|
||||||
obj_meta);
|
|
||||||
encode_objects_attach_meta(ctx, ip_surf, frame_meta,
|
encode_objects_attach_meta(ctx, ip_surf, frame_meta,
|
||||||
final_face_obj);
|
final_face_obj);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
nvds_add_obj_meta_to_frame(frame_meta, final_face_obj,
|
nvds_add_obj_meta_to_frame(frame_meta, final_face_obj,
|
||||||
obj_meta);
|
obj_meta);
|
||||||
}
|
}
|
||||||
@ -1615,27 +1551,13 @@ GstPadProbeReturn FaceNvInferServerManager::sgie_pad_buffer_probe(
|
|||||||
// unsigned int numDims = layer.inferDims.numDims;
|
// unsigned int numDims = layer.inferDims.numDims;
|
||||||
// unsigned int numElements = layer.inferDims.numElements;
|
// unsigned int numElements = layer.inferDims.numElements;
|
||||||
|
|
||||||
// std::cout << "Layer " << jkl << " (" << layer.layerName
|
|
||||||
// <<
|
|
||||||
// "):\n"; std::cout << " Num Dims: " << numDims << "\n";
|
|
||||||
// std::cout << " Num Elements: " << numElements << "\n";
|
|
||||||
// std::cout << " Dims: [";
|
|
||||||
// for (unsigned int mno = 0; mno < numDims; ++mno) {
|
|
||||||
// std::cout << layer.inferDims.d[mno];
|
|
||||||
// if (mno < numDims - 1)
|
|
||||||
// std::cout << ", ";
|
|
||||||
// }
|
|
||||||
// std::cout << "]\n";
|
|
||||||
|
|
||||||
// float *data_face = static_cast<float *>(layer.buffer);
|
// float *data_face = static_cast<float *>(layer.buffer);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// std::quick_exit(0);
|
|
||||||
// const NvDsInferLayerInfo &layer =
|
// const NvDsInferLayerInfo &layer =
|
||||||
// outputLayersInfo[0]; // or loop over all
|
// outputLayersInfo[0]; // or loop over all
|
||||||
|
|
||||||
// std::cout<<"meta->num_output_layers: "<<
|
// for (unsigned int i = 0;
|
||||||
// meta->num_output_layers<<std::endl; for (unsigned int i = 0;
|
|
||||||
// i < meta->num_output_layers; i++) {
|
// i < meta->num_output_layers; i++) {
|
||||||
// NvDsInferLayerInfo *info = &meta->output_layers_info[i];
|
// NvDsInferLayerInfo *info = &meta->output_layers_info[i];
|
||||||
// info->buffer = meta->out_buf_ptrs_host[i];
|
// info->buffer = meta->out_buf_ptrs_host[i];
|
||||||
@ -1652,7 +1574,6 @@ GstPadProbeReturn FaceNvInferServerManager::sgie_pad_buffer_probe(
|
|||||||
getDimsCHWFromDims(dims_chw,
|
getDimsCHWFromDims(dims_chw,
|
||||||
meta->output_layers_info[0].inferDims);
|
meta->output_layers_info[0].inferDims);
|
||||||
unsigned int numClasses = dims_chw.c;
|
unsigned int numClasses = dims_chw.c;
|
||||||
// std::cout << "numClasses: " << numClasses << std::endl;
|
|
||||||
(void)numClasses;
|
(void)numClasses;
|
||||||
// float *outputCoverageBuffer =
|
// float *outputCoverageBuffer =
|
||||||
// (float *) meta->output_layers_info[0].buffer;
|
// (float *) meta->output_layers_info[0].buffer;
|
||||||
|
|||||||
@ -9,6 +9,8 @@
|
|||||||
// #include "nvdsinfer_custom_impl.h"
|
// #include "nvdsinfer_custom_impl.h"
|
||||||
#include <immintrin.h> // for AVX intrinsics
|
#include <immintrin.h> // for AVX intrinsics
|
||||||
|
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
#include "config_manager.hpp"
|
#include "config_manager.hpp"
|
||||||
#include "custom_gstnvdsinfer.hpp"
|
#include "custom_gstnvdsinfer.hpp"
|
||||||
#include "nvdsmeta.h"
|
#include "nvdsmeta.h"
|
||||||
@ -72,4 +74,6 @@ class FaceNvInferServerManager {
|
|||||||
NvDsFrameMeta *);
|
NvDsFrameMeta *);
|
||||||
static void encode_objects_attach_meta(gpointer, NvBufSurface *,
|
static void encode_objects_attach_meta(gpointer, NvBufSurface *,
|
||||||
NvDsFrameMeta *, NvDsObjectMeta *);
|
NvDsFrameMeta *, NvDsObjectMeta *);
|
||||||
|
static std::unordered_map<guint, NvDsObjectMeta *> collect_body_objects(
|
||||||
|
NvDsFrameMeta *, gint);
|
||||||
};
|
};
|
||||||
@ -63,8 +63,6 @@ void NvOsdManager::save_full_frame(NvDsFrameMeta *frame_meta) {
|
|||||||
int stream_num = 0;
|
int stream_num = 0;
|
||||||
while (usrMetaList != NULL) {
|
while (usrMetaList != NULL) {
|
||||||
NvDsUserMeta *usrMetaData = (NvDsUserMeta *)usrMetaList->data;
|
NvDsUserMeta *usrMetaData = (NvDsUserMeta *)usrMetaList->data;
|
||||||
// std::cout<<"usrMetaData->base_meta.meta_type frame =
|
|
||||||
// "<<usrMetaData->base_meta.meta_type<<std::endl;
|
|
||||||
if (usrMetaData->base_meta.meta_type == NVDS_CROP_IMAGE_META) {
|
if (usrMetaData->base_meta.meta_type == NVDS_CROP_IMAGE_META) {
|
||||||
snprintf(fileFrameNameString, FILE_NAME_SIZE, "%s_frame_%d_%d.jpg",
|
snprintf(fileFrameNameString, FILE_NAME_SIZE, "%s_frame_%d_%d.jpg",
|
||||||
osd_string, frame_number, stream_num++);
|
osd_string, frame_number, stream_num++);
|
||||||
@ -75,8 +73,6 @@ void NvOsdManager::save_full_frame(NvDsFrameMeta *frame_meta) {
|
|||||||
fwrite(enc_jpeg_image->outBuffer, sizeof(uint8_t),
|
fwrite(enc_jpeg_image->outBuffer, sizeof(uint8_t),
|
||||||
enc_jpeg_image->outLen, file);
|
enc_jpeg_image->outLen, file);
|
||||||
fclose(file);
|
fclose(file);
|
||||||
// std::cout<<"fileFrameNameString =
|
|
||||||
// "<<fileFrameNameString<<std::endl;
|
|
||||||
}
|
}
|
||||||
usrMetaList = usrMetaList->next;
|
usrMetaList = usrMetaList->next;
|
||||||
}
|
}
|
||||||
@ -86,21 +82,15 @@ void NvOsdManager::save_cropped_objects(NvDsFrameMeta *frame_meta,
|
|||||||
NvDsObjectMeta *obj_meta,
|
NvDsObjectMeta *obj_meta,
|
||||||
guint num_rects) {
|
guint num_rects) {
|
||||||
const char *osd_string = "OSD";
|
const char *osd_string = "OSD";
|
||||||
// std::cout<<"obj_meta->unique_component_id =
|
|
||||||
// "<<obj_meta->unique_component_id<<std::endl;
|
|
||||||
char fileObjNameString[FILE_NAME_SIZE];
|
char fileObjNameString[FILE_NAME_SIZE];
|
||||||
|
|
||||||
/* For Demonstration Purposes we are writing metadata to jpeg images of
|
/* For Demonstration Purposes we are writing metadata to jpeg images of
|
||||||
* vehicles or persons for the first 100 frames only.
|
* vehicles or persons for the first 100 frames only.
|
||||||
* The files generated have a 'OSD' prefix. */
|
* The files generated have a 'OSD' prefix. */
|
||||||
// std::cout<<"in obj_meta_list NvOsdManager"<<std::endl;
|
|
||||||
// std::quick_exit(0);
|
|
||||||
NvDsUserMetaList *usrMetaList = obj_meta->obj_user_meta_list;
|
NvDsUserMetaList *usrMetaList = obj_meta->obj_user_meta_list;
|
||||||
FILE *file;
|
FILE *file;
|
||||||
while (usrMetaList != NULL) {
|
while (usrMetaList != NULL) {
|
||||||
NvDsUserMeta *usrMetaData = (NvDsUserMeta *)usrMetaList->data;
|
NvDsUserMeta *usrMetaData = (NvDsUserMeta *)usrMetaList->data;
|
||||||
// std::cout<<"usrMetaData->base_meta.meta_type object =
|
|
||||||
// "<<usrMetaData->base_meta.meta_type<<std::endl;
|
|
||||||
if (usrMetaData->base_meta.meta_type == NVDS_CROP_IMAGE_META) {
|
if (usrMetaData->base_meta.meta_type == NVDS_CROP_IMAGE_META) {
|
||||||
NvDsObjEncOutParams *enc_jpeg_image =
|
NvDsObjEncOutParams *enc_jpeg_image =
|
||||||
(NvDsObjEncOutParams *)usrMetaData->user_meta_data;
|
(NvDsObjEncOutParams *)usrMetaData->user_meta_data;
|
||||||
@ -113,9 +103,6 @@ void NvOsdManager::save_cropped_objects(NvDsFrameMeta *frame_meta,
|
|||||||
fwrite(enc_jpeg_image->outBuffer, sizeof(uint8_t),
|
fwrite(enc_jpeg_image->outBuffer, sizeof(uint8_t),
|
||||||
enc_jpeg_image->outLen, file);
|
enc_jpeg_image->outLen, file);
|
||||||
fclose(file);
|
fclose(file);
|
||||||
std::cout << "fileObjNameString = " << fileObjNameString
|
|
||||||
<< " obj_meta->class_id =" << obj_meta->class_id
|
|
||||||
<< std::endl;
|
|
||||||
usrMetaList = NULL;
|
usrMetaList = NULL;
|
||||||
} else {
|
} else {
|
||||||
usrMetaList = usrMetaList->next;
|
usrMetaList = usrMetaList->next;
|
||||||
@ -153,14 +140,6 @@ GstPadProbeReturn NvOsdManager::osd_src_pad_buffer_probe(GstPad *pad,
|
|||||||
if (obj_meta->class_id == PGIE_CLASS_ID_PERSON) {
|
if (obj_meta->class_id == PGIE_CLASS_ID_PERSON) {
|
||||||
person_count++;
|
person_count++;
|
||||||
num_rects++;
|
num_rects++;
|
||||||
// std::cout << "In OSD sink "
|
|
||||||
// << "x = " << obj_meta->rect_params.left
|
|
||||||
// << " y = " << obj_meta->rect_params.top
|
|
||||||
// << " w = " << obj_meta->rect_params.width
|
|
||||||
// << " h = " << obj_meta->rect_params.height
|
|
||||||
// << " score = " << obj_meta->confidence
|
|
||||||
// << " Object ID: " << obj_meta->object_id
|
|
||||||
// << std::endl;
|
|
||||||
}
|
}
|
||||||
if (write_cropped_objects_to_disk == true)
|
if (write_cropped_objects_to_disk == true)
|
||||||
save_cropped_objects(frame_meta, obj_meta, num_rects);
|
save_cropped_objects(frame_meta, obj_meta, num_rects);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user