Commit 13fb7a260662c37c2b74c8d65b1892c6e8f451d8
1 parent
bab9a6c3
代码优化
Showing
3 changed files
with
36 additions
and
25 deletions
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/MutliSourceVideoProcess.cpp
... | ... | @@ -744,10 +744,14 @@ void CMutliSourceVideoProcess::callTaskObjInfoCallbackFunc(int objCount, VPT_Obj |
744 | 744 | newObjInfo.right = obj[c].right; |
745 | 745 | newObjInfo.top = obj[c].top; |
746 | 746 | newObjInfo.bottom = obj[c].bottom; |
747 | - if (m_snaphot_helper.snapShotInfo.find(newObj) == m_snaphot_helper.snapShotInfo.end()) | |
747 | + | |
748 | + int index = m_snaphot_helper.getIndexByKey(newObj); | |
749 | + if(index < 0) { | |
748 | 750 | newObjInfo.index = obj[c].index; |
749 | - else | |
750 | - newObjInfo.index = m_snaphot_helper.snapShotInfo[newObj].index.index; | |
751 | + } else { | |
752 | + newObjInfo.index = index; | |
753 | + } | |
754 | + | |
751 | 755 | newObjInfo.confidence = obj[c].confidence; |
752 | 756 | if (taskObjInfoCallbackFunc != nullptr) |
753 | 757 | { |
... | ... | @@ -1067,11 +1071,10 @@ void CMutliSourceVideoProcess::algorthim_process() |
1067 | 1071 | //实时查看模块 绘制目标框到画面上 |
1068 | 1072 | if (view) |
1069 | 1073 | { |
1070 | - int index = 0; | |
1071 | - if (m_snaphot_helper.snapShotInfo.find(newObj) == m_snaphot_helper.snapShotInfo.end()) | |
1074 | + int index = m_snaphot_helper.getIndexByKey(newObj); | |
1075 | + if(index < 0) { | |
1072 | 1076 | index = VPTResult[i].obj[c].index; |
1073 | - else | |
1074 | - index = m_snaphot_helper.snapShotInfo[newObj].index.index; | |
1077 | + } | |
1075 | 1078 | |
1076 | 1079 | //cout << "---- vew ---- "; |
1077 | 1080 | int p1 = VPTResult[i].obj[c].left - 10 > 0 ? VPTResult[i].obj[c].left - 10 : 0; |
... | ... | @@ -1153,26 +1156,17 @@ void CMutliSourceVideoProcess::algorthim_process() |
1153 | 1156 | cout << "result_analysis time_using:" << result_analysis_time2 - result_analysis_time << endl; |
1154 | 1157 | #endif |
1155 | 1158 | |
1156 | - | |
1157 | - auto task_iter = TaskinPlayID.begin(); | |
1158 | - | |
1159 | 1159 | AttributionAnalysis = false; |
1160 | 1160 | |
1161 | 1161 | long long second_analysis_time = get_cur_time_ms(); |
1162 | 1162 | |
1163 | + auto task_iter = TaskinPlayID.begin(); | |
1163 | 1164 | for (int i = 0; i < curPlayTaskCount; i++) |
1164 | 1165 | { |
1165 | 1166 | for (int j = 0; j < deleteObjectID[i].size(); j++) |
1166 | 1167 | { |
1167 | 1168 | OBJ_KEY deleteObj = { *task_iter, deleteObjectID[i][j] }; |
1168 | - | |
1169 | - if (m_snaphot_helper.snapShotInfo.find(deleteObj) == m_snaphot_helper.snapShotInfo.end()) | |
1170 | - continue; | |
1171 | - | |
1172 | - auto iter = m_snaphot_helper.snapShotInfo.find(deleteObj); | |
1173 | - iter->second.finishTracker = true; | |
1174 | - | |
1175 | - m_snaphot_helper.SaveResultInFile(iter->first, iter->second); | |
1169 | + m_snaphot_helper.SaveResultInFile(deleteObj); | |
1176 | 1170 | } |
1177 | 1171 | |
1178 | 1172 | task_iter++; |
... | ... | @@ -1220,7 +1214,7 @@ void CMutliSourceVideoProcess::algorthim_process() |
1220 | 1214 | long long costTime1 = get_cur_time_ms() - begintime1; |
1221 | 1215 | LOG_INFO("Process Thread is Finished. total frame cost time = {} ms, process times: {}", costTime1, process_times); |
1222 | 1216 | |
1223 | - m_snaphot_helper.snapShotInfo.clear(); | |
1217 | + m_snaphot_helper.clearSnapshotInfo(); | |
1224 | 1218 | ProcessFlag = false; |
1225 | 1219 | |
1226 | 1220 | if (batch_img != NULL) | ... | ... |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/snapshot_analysis/snapshot_helper.cpp
... | ... | @@ -585,7 +585,7 @@ void snapshot_helper::finish_task_ss_analysis(int task_id) //是 |
585 | 585 | if (!hcp_keys.empty()) |
586 | 586 | { |
587 | 587 | LOG_DEBUG("hcp_keys size: {}", hcp_keys.size()); |
588 | - | |
588 | + | |
589 | 589 | const int obj_batch_count = OBJ_BATCH_COUNT / OBJ_SCALE; |
590 | 590 | const int hcp_batch_size = hcp_keys.size(); |
591 | 591 | int hcp_batch_count = obj_batch_count; |
... | ... | @@ -1977,8 +1977,17 @@ int snapshot_helper::save_snapshot(bool is_image, bool on_image_display, OBJ_KEY |
1977 | 1977 | return 1; |
1978 | 1978 | } |
1979 | 1979 | |
1980 | -int snapshot_helper::SaveResultInFile(const OBJ_KEY & obj_key, const OBJ_VALUE & obj_value) | |
1980 | +int snapshot_helper::SaveResultInFile(OBJ_KEY deleteObj) | |
1981 | 1981 | { |
1982 | + auto it = snapShotInfo.find(deleteObj); | |
1983 | + if(it == snapShotInfo.end()){ | |
1984 | + return 0; | |
1985 | + } | |
1986 | + it->second.finishTracker = true; | |
1987 | + | |
1988 | + const OBJ_KEY & obj_key = it->first; | |
1989 | + const OBJ_VALUE & obj_value = it->second; | |
1990 | + | |
1982 | 1991 | if (0 == obj_value.index.index && obj_value.snapShotLittle.width == HP_WIDTH && obj_value.snapShotLittle.height == HP_HEIGHT) |
1983 | 1992 | { |
1984 | 1993 | if (face_detect_cf == SY_CONFIG_OPEN) |
... | ... | @@ -2297,7 +2306,7 @@ CropInfo snapshot_helper::cacheSnapShotInfo(OBJ_KEY newObj, VPT_ObjInfo obj, Tas |
2297 | 2306 | } |
2298 | 2307 | |
2299 | 2308 | int snapshot_helper::getIndexByKey(OBJ_KEY newObj) { |
2300 | - if (snapShotInfo.find(newObj) == snapShotInfo.end()) { | |
2309 | + if (snapShotInfo.find(newObj) != snapShotInfo.end()) { | |
2301 | 2310 | return snapShotInfo[newObj].index.index; |
2302 | 2311 | } |
2303 | 2312 | |
... | ... | @@ -2448,4 +2457,8 @@ void snapshot_helper::cacheFaceSnapshotInfo(sy_img *human_img, int human_count, |
2448 | 2457 | delete[] face_det_result[fd_i].info; |
2449 | 2458 | delete face_det_result; |
2450 | 2459 | } |
2460 | +} | |
2461 | + | |
2462 | +void snapshot_helper::clearSnapshotInfo() { | |
2463 | + snapShotInfo.clear(); | |
2451 | 2464 | } |
2452 | 2465 | \ No newline at end of file | ... | ... |
vehicle_structure_platform.git0708-3080-trt-face/src/VPT/snapshot_analysis/snapshot_helper.h
... | ... | @@ -58,7 +58,7 @@ struct AABBBOX |
58 | 58 | }; |
59 | 59 | |
60 | 60 | struct OBJ_INDEX { |
61 | - int index; | |
61 | + int index {-1}; | |
62 | 62 | int count; //用于对index的计数 |
63 | 63 | }; |
64 | 64 | |
... | ... | @@ -154,7 +154,6 @@ public: |
154 | 154 | |
155 | 155 | public: |
156 | 156 | std::mutex callback_tx; |
157 | - map<OBJ_KEY, OBJ_VALUE> snapShotInfo; | |
158 | 157 | queue<SNAPSHOT_IMAGE_UNIT> snapshotImageQueue; |
159 | 158 | map<OBJ_KEY, video_object_snapshot> finished_analysis_ss_info; |
160 | 159 | queue<OBJ_KEY> finished_save_ss_info_que; |
... | ... | @@ -175,7 +174,7 @@ public: |
175 | 174 | void add_task_info(int new_task_id, TASK_INFO new_task_info); |
176 | 175 | void delete_task_info(int new_task_id, TASK_INFO new_task_info); |
177 | 176 | |
178 | - int SaveResultInFile(const OBJ_KEY & obj_key, const OBJ_VALUE & obj_value); | |
177 | + int SaveResultInFile(OBJ_KEY deleteObj); | |
179 | 178 | |
180 | 179 | void erase_snapshotImage(OBJ_KEY obj_key); |
181 | 180 | //整体的三种二次属性分析 |
... | ... | @@ -199,6 +198,9 @@ public: |
199 | 198 | void cacheFaceSnapshotInfo(sy_img *human_img, int human_count, sy_point* ori_points, vector<int> human_idx, vector<OBJ_KEY> human_obj_keys, int snapshot_left[], int snapshot_top[], Task task); |
200 | 199 | |
201 | 200 | int getIndexByKey(OBJ_KEY newObj); |
201 | + std::map<OBJ_KEY, OBJ_VALUE>::iterator getValueByKey(OBJ_KEY newObj); | |
202 | + | |
203 | + void clearSnapshotInfo(); | |
202 | 204 | |
203 | 205 | private: |
204 | 206 | int save_snapshot(bool is_image, bool on_image_display, OBJ_KEY obj_key, char* filename, char* mode, float* imgData, int width, int height, int taskID, int objID, int recFlag, int left, int top, int right, int bottom); |
... | ... | @@ -221,6 +223,8 @@ private: |
221 | 223 | VehicleRecognition m_vehicle_recognition; |
222 | 224 | face_det_module m_face_det_module; |
223 | 225 | |
226 | + map<OBJ_KEY, OBJ_VALUE> snapShotInfo; | |
227 | + | |
224 | 228 | queue<OBJ_KEY> count_person; |
225 | 229 | queue<OBJ_KEY> count_bike; |
226 | 230 | queue<OBJ_KEY> count_vehicle; | ... | ... |