diff --git a/src/ai_platform/MultiSourceProcess.cpp b/src/ai_platform/MultiSourceProcess.cpp index e51bfc7..b74bd73 100644 --- a/src/ai_platform/MultiSourceProcess.cpp +++ b/src/ai_platform/MultiSourceProcess.cpp @@ -449,7 +449,7 @@ int CMultiSourceProcess::algorthim_vpt(vector vec_gpuMem){ #else algorithm_vehicle_relult(vec_vptMem, vptResult, deleteObjectID); - // send_locus_finished_msg(vpt_interest_task_id, deleteObjectID); + send_locus_finished_msg(vpt_interest_task_id, deleteObjectID); #endif if(vptResult.size() > 0){ @@ -509,13 +509,18 @@ int CMultiSourceProcess::algorithm_vehicle_relult(vector vec_devM strcpy(new_obj_ss_info.video_image_path, fpath_origin.c_str()); strcpy(new_obj_ss_info.snapshot_image_path, fpath_roi.c_str()); new_obj_ss_info.nFinished = 0; - string json_str = "1111";//helpers::gen_json::gen_multi_obj_json(algorithm_type_t::VEHICLE_SNAPSHOT, new_obj_ss_info); + string json_str = helpers::gen_json::gen_multi_obj_json(algorithm_type_t::VEHICLE_SNAPSHOT, new_obj_ss_info); ImgSaveInfo save_info; save_info.file_path = fpath_roi; save_info.img_info = vec_obj_info_list[i]; save_info.json_str = json_str; m_save_snapshot_reprocessing->reprocessing_process_wo_locus_async(save_info); + + OBJ_KEY obj_key{task_id, obj.object_id}; + // 保存有轨迹的object记录,轨迹结束时需要发消息 + std::lock_guard l(m_total_mutex); + m_total_snapshot_info_multi_object.insert(obj_key); } vec_obj_info_list.clear(); @@ -535,23 +540,24 @@ void CMultiSourceProcess::send_locus_finished_msg(vector& vpt_interest_t OBJ_KEY obj_key = {task_id, j}; auto task_param_ptr = m_task_param_manager->get_task_algor_param(task_id); - auto task_other_param_ptr = m_task_param_manager->get_task_other_param(task_id); // 该路任务开启了抓拍功能 开始抓拍保存;若未开启抓拍,清空显存资源 - // if (task_param_ptr->vehicle_algors.find(algorithm_type_t::VEHICLE_SNAPSHOT) != task_param_ptr->vehicle_algors.end()) { - // std::lock_guard l(m_total_mutex); - // if (m_total_snapshot_info_multi_object.find(obj_key) != m_total_snapshot_info_multi_object.end()) { - // video_object_snapshot new_obj_ss_info; - // new_obj_ss_info.object_id = j; - // new_obj_ss_info.nFinished = 1; - // strcpy(new_obj_ss_info.task_id, task_id.c_str()); - // string json_str = helpers::gen_json::gen_multi_obj_json(algorithm_type_t::VEHICLE_SNAPSHOT, new_obj_ss_info); - // // 通知结束的轨迹 - // m_save_snapshot_reprocessing->reprocessing_finish_locus_async(obj_key,json_str); - - // m_total_snapshot_info_multi_object.erase(obj_key); - // } - // } + if (task_param_ptr->vehicle_algors.find(algorithm_type_t::VEHICLE_SNAPSHOT) != task_param_ptr->vehicle_algors.end()) { + std::lock_guard l(m_total_mutex); + if (m_total_snapshot_info_multi_object.find(obj_key) != m_total_snapshot_info_multi_object.end()) { + video_object_snapshot new_obj_ss_info; + new_obj_ss_info.object_id = j; + new_obj_ss_info.nFinished = 1; + strcpy(new_obj_ss_info.task_id, task_id.c_str()); + string json_str = helpers::gen_json::gen_multi_obj_json(algorithm_type_t::VEHICLE_SNAPSHOT, new_obj_ss_info); + // 通知结束的轨迹 + ImgSaveInfo save_info; + save_info.json_str = json_str; + m_save_snapshot_reprocessing->reprocessing_process_wo_locus_async(save_info); + + m_total_snapshot_info_multi_object.erase(obj_key); + } + } } } } \ No newline at end of file diff --git a/src/ai_platform/MultiSourceProcess.h b/src/ai_platform/MultiSourceProcess.h index 8f49517..0302a4f 100644 --- a/src/ai_platform/MultiSourceProcess.h +++ b/src/ai_platform/MultiSourceProcess.h @@ -12,7 +12,7 @@ #include #include #include - +#include using namespace std; @@ -75,6 +75,9 @@ private: int m_batch_size{1}; + set m_total_snapshot_info_multi_object; + mutex m_total_mutex; + #ifdef POST_USE_RABBITMQ mq::Manager *mq_manager_{nullptr}; #endif diff --git a/src/reprocessing_module/save_snapshot_reprocessing.cpp b/src/reprocessing_module/save_snapshot_reprocessing.cpp index fab1d7f..91d90ab 100644 --- a/src/reprocessing_module/save_snapshot_reprocessing.cpp +++ b/src/reprocessing_module/save_snapshot_reprocessing.cpp @@ -67,9 +67,6 @@ void save_snapshot_reprocessing::set_callback(callback_t cb) { void save_snapshot_reprocessing::reprocessing_process_wo_locus_async(ImgSaveInfo saveInfo){ - // dvpp_img_release(saveInfo.img_info); - // return; - while(!bFinish){ waitforsave_img_queue_mutex.lock(); if(waitforsave_img_queue.size() > 100){