Commit 3d1ce1297ec7122bebe6ea5ef2de6bb92070604d

Authored by Hu Chunming
1 parent 32b73c30

修正抠图失败还会保存原图的问题;

修复人脸轨迹结束后抠图信息没删除的问题
src/ai_platform/MultiSourceProcess.cpp
... ... @@ -693,6 +693,7 @@ bool CMultiSourceProcess::finish_task(const string taskID, const bool delete_sna
693 693 m_task_param_manager->delete_task_param(taskID);
694 694 #endif
695 695 m_snapshot_reprocessing->release_finished_locus_snapshot(taskID);
  696 + m_snapshot_reprocessing->release_finished_face_locus_snapshot(taskID);
696 697 m_snapshot_reprocessing->release_village_finished_locus_snapshot(taskID);
697 698  
698 699 return true;
... ... @@ -879,9 +880,6 @@ int CMultiSourceProcess::algorthim_vpt(vector<DeviceMemory*> vec_gpuMem){
879 880 manned_snapshot(vpt_interest_task_id, vec_vptMem, deleteObjectID);
880 881 #endif
881 882  
882   - // if(vptResult.size() > 0){
883   - // cout << vptResult[0].obj_count<< endl;
884   - // }
885 883 vptResult.clear();
886 884 unUsedResult.clear();
887 885 deleteObjectID.clear();
... ... @@ -910,6 +908,14 @@ int CMultiSourceProcess::algorithm_vehicle_relult(vector&lt;DeviceMemory*&gt; vec_devM
910 908 LOG_ERROR("taskId {} not found algor {}", task_id.c_str(), (int)algorithm_type_t::VEHICLE_SNAPSHOT);
911 909 continue;
912 910 }
  911 +
  912 + vector<vpc_img_info> vec_obj_info_list = pVPCUtil->crop_batch(result.memPtr, result.objs);
  913 + if(vec_obj_info_list.size() != result.objs.size()){
  914 + LOG_ERROR("vpc_crop size error !");
  915 + VPCUtil::vpc_imgList_release(vec_obj_info_list);
  916 + continue;
  917 + }
  918 +
913 919 const algor_basic_config_param_t *basic_param = algor_other_params->second->basic_param;
914 920  
915 921 std::string cur_timestamp_ms = std::to_string(helpers::timer::get_cur_time_ms());
... ... @@ -921,13 +927,6 @@ int CMultiSourceProcess::algorithm_vehicle_relult(vector&lt;DeviceMemory*&gt; vec_devM
921 927 saveInfo.img_info = VPCUtil::vpc_devMem2vpcImg(result.memPtr);
922 928 m_save_snapshot_reprocessing->reprocessing_process_wo_locus_async(saveInfo);
923 929  
924   - vector<vpc_img_info> vec_obj_info_list = pVPCUtil->crop_batch(result.memPtr, result.objs);
925   - if(vec_obj_info_list.size() != result.objs.size()){
926   - LOG_ERROR("vpc_crop size error !");
927   - VPCUtil::vpc_imgList_release(vec_obj_info_list);
928   - continue;
929   - }
930   -
931 930 // 保存抠图并发MQ
932 931 for(int i =0; i < result.objs.size(); i++){
933 932 video_object_info obj = result.objs[i];
... ... @@ -1013,7 +1012,7 @@ void CMultiSourceProcess::vehicle_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1013 1012 }
1014 1013  
1015 1014 void CMultiSourceProcess::vehicle_locus_finished(const OBJ_KEY obj_key) {
1016   - LOG_DEBUG("vehicle_locus_finished in");
  1015 +
1017 1016 auto task_param_ptr = m_task_param_manager->get_task_algor_param(obj_key.video_id);
1018 1017 if (task_param_ptr == nullptr){
1019 1018 return;
... ... @@ -1050,8 +1049,6 @@ void CMultiSourceProcess::vehicle_locus_finished(const OBJ_KEY obj_key) {
1050 1049 LOG_DEBUG("algor_type");
1051 1050 auto algor_type = index_to_algo_type[obj_value.index.index];
1052 1051  
1053   -
1054   -
1055 1052 LOG_DEBUG("task_other_param");
1056 1053 auto it_algor_type = task_other_param.find(algor_type);
1057 1054 if(it_algor_type == task_other_param.end()) {
... ... @@ -1060,11 +1057,6 @@ void CMultiSourceProcess::vehicle_locus_finished(const OBJ_KEY obj_key) {
1060 1057  
1061 1058 LOG_DEBUG("algor_param");
1062 1059 auto algor_param = (algor_config_param_snapshot *)it_algor_type->second->algor_param;
1063   -
1064   -
1065   -
1066   -
1067   - // auto algor_param = (algor_config_param_snapshot *)task_other_param[algor_type]->algor_param;
1068 1060 if(algor_param == nullptr) {
1069 1061 return;
1070 1062 }
... ... @@ -1137,7 +1129,7 @@ void CMultiSourceProcess::timing_snapshot_thread(){
1137 1129 DecoderManager* pDecManager = DecoderManager::getInstance();
1138 1130 while(!m_bfinish){
1139 1131 vector<DeviceMemory*> vec_devMem = pDecManager->timing_snapshot_all();
1140   - for (auto devMem : vec_devMem){
  1132 + for (auto devMem : vec_devMem) {
1141 1133 auto task_id = devMem->getId();
1142 1134 auto task_other_params = m_task_param_manager->get_task_other_param(task_id);
1143 1135 if (task_other_params == nullptr)
... ... @@ -1803,9 +1795,8 @@ void CMultiSourceProcess::face_locus_finished(const OBJ_KEY obj_key) {
1803 1795 roi_save_info.json_str = json_str;
1804 1796 m_save_snapshot_reprocessing->reprocessing_process_wo_locus_async(roi_save_info);
1805 1797  
1806   -
1807   - _total_face_snapshot_info.erase(obj_key);
1808   -
  1798 + // 删除结束轨迹的数据
  1799 + m_snapshot_reprocessing->release_finished_face_locus_snapshot(obj_key.video_id, obj_key.obj_id, false);
1809 1800 }
1810 1801  
1811 1802 int CMultiSourceProcess::recode_thread() {
... ...
src/reprocessing_module/snapshot_reprocessing.cpp
... ... @@ -819,4 +819,39 @@ void snapshot_reprocessing::release_village_finished_locus_snapshot(const string
819 819  
820 820 map<OBJ_KEY, OBJ_VALUE> snapshot_reprocessing::get_total_face_snapshot_info(){
821 821 return total_face_snapshot_info;
  822 +}
  823 +
  824 +void snapshot_reprocessing::release_finished_face_locus_snapshot(const string taskid, const int obj_id, bool bRelease) {
  825 +
  826 + LOG_DEBUG("[info] task_id {} delete obj_id {}", taskid, obj_id); //221026
  827 + if (obj_id != -1) {
  828 + OBJ_KEY cur_key = { taskid , obj_id };
  829 + auto it = total_face_snapshot_info.find(cur_key);
  830 + if (it == total_face_snapshot_info.end()){
  831 + return;
  832 + }
  833 +
  834 + if (bRelease){
  835 + OBJ_VALUE ss = total_face_snapshot_info[cur_key];
  836 +
  837 + VPCUtil::vpc_img_release(ss.snapShot);
  838 + VPCUtil::vpc_img_release(ss.snapShotLittle);
  839 + }
  840 +
  841 + total_face_snapshot_info.erase(cur_key);
  842 + return;
  843 + }
  844 +
  845 + for(auto ss = total_face_snapshot_info.begin(); ss != total_face_snapshot_info.end(); ss++)
  846 + {
  847 + if (strcmp(ss->first.video_id.c_str(), taskid.c_str()) == 0)
  848 + {
  849 + if (bRelease){
  850 + VPCUtil::vpc_img_release(ss->second.snapShot);
  851 + VPCUtil::vpc_img_release(ss->second.snapShotLittle);
  852 + }
  853 + total_face_snapshot_info.erase(ss);
  854 + return;
  855 + }
  856 + }
822 857 }
823 858 \ No newline at end of file
... ...
src/reprocessing_module/snapshot_reprocessing.h
... ... @@ -84,6 +84,7 @@ public:
84 84  
85 85 void release_finished_locus_snapshot(const string taskid, const int objid = -1, bool bRelease = true); //-1为删除该路所有任务的快照图
86 86 void release_village_finished_locus_snapshot(const string taskid, const int objid = -1, bool bRelease = true);
  87 + void release_finished_face_locus_snapshot(const string taskid, const int objid = -1, bool bRelease = true);
87 88  
88 89 private:
89 90 bool best_snapshot_judge_algor(const OBJ_KEY& obj_key, const OBJ_VALUE& obj_value, int left, int top, int width, int height, int image_width, int image_height);
... ...