Commit b00d3d35ad08a8679db2cad948b17ab1f9d284e5
1 parent
c692ff9e
添加行人、机动车非法闯入
Showing
5 changed files
with
84 additions
and
65 deletions
src/ai_engine_module/pedestrian_vehicle_retrograde.cpp
@@ -380,10 +380,11 @@ bool PedestrianVehicleRetrograde::update_mstreams(const std::vector<task_id_t> & | @@ -380,10 +380,11 @@ bool PedestrianVehicleRetrograde::update_mstreams(const std::vector<task_id_t> & | ||
380 | obj.bottom = clip(trace.bottom, 0, height); | 380 | obj.bottom = clip(trace.bottom, 0, height); |
381 | 381 | ||
382 | vpc_img_info img_info = pVpcUtil->crop(src_img, obj); | 382 | vpc_img_info img_info = pVpcUtil->crop(src_img, obj); |
383 | - result_data.roi_img_desc = img_info.pic_desc; | ||
384 | - | ||
385 | - // 保存结果 | ||
386 | - obj_to_alarm_boxes_[obj_key].emplace_back(std::move(result_data)); | 383 | + if(img_info.pic_desc != nullptr){ |
384 | + result_data.roi_img_desc = img_info.pic_desc; | ||
385 | + // 保存结果 | ||
386 | + obj_to_alarm_boxes_[obj_key].emplace_back(std::move(result_data)); | ||
387 | + } | ||
387 | } | 388 | } |
388 | 389 | ||
389 | LOG_DEBUG("obj_to_alarm_boxes_ size: {}", obj_to_alarm_boxes_.size()); | 390 | LOG_DEBUG("obj_to_alarm_boxes_ size: {}", obj_to_alarm_boxes_.size()); |
src/ai_engine_module/pedestrian_vehicle_trespass.cpp
@@ -188,11 +188,6 @@ void PedestrianVehicleTrespass::pedestrianvehicletrespass_init_region(const stri | @@ -188,11 +188,6 @@ void PedestrianVehicleTrespass::pedestrianvehicletrespass_init_region(const stri | ||
188 | cv::Mat &dst_mat = trespass_regions[obj_key]; | 188 | cv::Mat &dst_mat = trespass_regions[obj_key]; |
189 | cv::cvtColor(src, trespass_regions[obj_key], cv::COLOR_BGR2GRAY); | 189 | cv::cvtColor(src, trespass_regions[obj_key], cv::COLOR_BGR2GRAY); |
190 | cv::threshold(trespass_regions[obj_key], trespass_regions[obj_key], 100, 255, cv::THRESH_BINARY); | 190 | cv::threshold(trespass_regions[obj_key], trespass_regions[obj_key], 100, 255, cv::THRESH_BINARY); |
191 | - | ||
192 | - if (false) { | ||
193 | - cv::imwrite("ori.jpg", src); | ||
194 | - cv::imwrite("region.jpg", trespass_regions[obj_key]); | ||
195 | - } | ||
196 | } | 191 | } |
197 | 192 | ||
198 | /* 非法闯入禁区的 算法判断函数 */ | 193 | /* 非法闯入禁区的 算法判断函数 */ |
@@ -302,7 +297,6 @@ bool PedestrianVehicleTrespass::update_mstreams(const std::vector<task_id_t> &ta | @@ -302,7 +297,6 @@ bool PedestrianVehicleTrespass::update_mstreams(const std::vector<task_id_t> &ta | ||
302 | int height = src_img->getHeight(); | 297 | int height = src_img->getHeight(); |
303 | video_object_info obj; | 298 | video_object_info obj; |
304 | strcpy(obj.task_id, obj_key.task_id.c_str()); | 299 | strcpy(obj.task_id, obj_key.task_id.c_str()); |
305 | - // obj.task_id = obj_key.task_id.c_str(); | ||
306 | obj.object_id = obj_key.obj_id; | 300 | obj.object_id = obj_key.obj_id; |
307 | obj.left = clip(result_data.box.left, 0, width); | 301 | obj.left = clip(result_data.box.left, 0, width); |
308 | obj.top = clip(result_data.box.top, 0, height); | 302 | obj.top = clip(result_data.box.top, 0, height); |
@@ -310,9 +304,11 @@ bool PedestrianVehicleTrespass::update_mstreams(const std::vector<task_id_t> &ta | @@ -310,9 +304,11 @@ bool PedestrianVehicleTrespass::update_mstreams(const std::vector<task_id_t> &ta | ||
310 | obj.bottom = clip(result_data.box.bottom, 0, height); | 304 | obj.bottom = clip(result_data.box.bottom, 0, height); |
311 | 305 | ||
312 | vpc_img_info img_info = pVpcUtil->crop(src_img, obj); | 306 | vpc_img_info img_info = pVpcUtil->crop(src_img, obj); |
313 | - result_data.roi_img_desc = img_info.pic_desc; | ||
314 | - | ||
315 | - obj_to_alarm_boxes_[obj_key].emplace_back(std::move(result_data)); | 307 | + if(img_info.pic_desc != nullptr){ |
308 | + result_data.roi_img_desc = img_info.pic_desc; | ||
309 | + obj_to_alarm_boxes_[obj_key].emplace_back(std::move(result_data)); | ||
310 | + } | ||
311 | + | ||
316 | obj_to_position_.erase(obj_key); | 312 | obj_to_position_.erase(obj_key); |
317 | } | 313 | } |
318 | 314 |
src/ai_platform/MultiSourceProcess.cpp
@@ -246,9 +246,20 @@ bool CMultiSourceProcess::AddTask(task_param _cur_task_param){ | @@ -246,9 +246,20 @@ bool CMultiSourceProcess::AddTask(task_param _cur_task_param){ | ||
246 | m_FinishedTaskMap[task_id] = false; | 246 | m_FinishedTaskMap[task_id] = false; |
247 | m_FinishedTaskMtx.unlock(); | 247 | m_FinishedTaskMtx.unlock(); |
248 | 248 | ||
249 | - // 设置定时截图的时间间隔 | ||
250 | auto algor_map = m_task_param_manager->get_task_other_param(task_id); | 249 | auto algor_map = m_task_param_manager->get_task_other_param(task_id); |
251 | if (algor_map != nullptr){ | 250 | if (algor_map != nullptr){ |
251 | + /* 如果开启了行人 机动车非法闯入功能 生成闯入区域mask */ | ||
252 | + if (algor_map->find(algorithm_type_t::PEDESTRIAN_TRESPASS) != algor_map->end()) { | ||
253 | + pedestrian_vehicle_trespass_.pedestrianvehicletrespass_init_region( | ||
254 | + task_id, algorithm_type_t::PEDESTRIAN_TRESPASS, input_image_width, input_image_height); | ||
255 | + } | ||
256 | + | ||
257 | + if (algor_map->find(algorithm_type_t::VEHICLE_TRESPASS) != algor_map->end()) { | ||
258 | + pedestrian_vehicle_trespass_.pedestrianvehicletrespass_init_region( | ||
259 | + task_id, algorithm_type_t::VEHICLE_TRESPASS, input_image_width, input_image_height); | ||
260 | + } | ||
261 | + | ||
262 | + // 设置定时截图的时间间隔 | ||
252 | auto algor = algor_map->find(algorithm_type_t::VIDEO_TIMING_SNAPSHOT); | 263 | auto algor = algor_map->find(algorithm_type_t::VIDEO_TIMING_SNAPSHOT); |
253 | if(algor != algor_map->end()){ | 264 | if(algor != algor_map->end()){ |
254 | task_param_manager::algo_param_type_t_* cur_task_params = algor->second; | 265 | task_param_manager::algo_param_type_t_* cur_task_params = algor->second; |
@@ -663,54 +674,7 @@ int CMultiSourceProcess::endframe_obj_process(const OBJ_KEY &obj_key, algorithm_ | @@ -663,54 +674,7 @@ int CMultiSourceProcess::endframe_obj_process(const OBJ_KEY &obj_key, algorithm_ | ||
663 | vehicle_locus_finished(obj_key); | 674 | vehicle_locus_finished(obj_key); |
664 | 675 | ||
665 | /* 开启行人&机动车逆行算法模块,获取该目标的算法分析结果 返回结果+快照 最后释放资源 */ | 676 | /* 开启行人&机动车逆行算法模块,获取该目标的算法分析结果 返回结果+快照 最后释放资源 */ |
666 | - endframe_retrograde_obj_process(obj_key); | ||
667 | -} | ||
668 | - | ||
669 | -int CMultiSourceProcess::endframe_retrograde_obj_process(const OBJ_KEY &obj_key) { | ||
670 | - auto task_param_ptr = m_task_param_manager->get_task_algor_param(obj_key.video_id); | ||
671 | - | ||
672 | - /* 开启行人&机动车逆行算法模块,获取该目标的算法分析结果 返回结果+快照 最后释放资源 */ | ||
673 | - if (task_param_ptr->human_algors.find(algorithm_type_t::PEDESTRIAN_RETROGRADE) != | ||
674 | - task_param_ptr->human_algors.end()) | ||
675 | - retrograde_alarm(obj_key, algorithm_type_t::PEDESTRIAN_RETROGRADE); | ||
676 | - | ||
677 | - if (task_param_ptr->vehicle_algors.find(algorithm_type_t::VEHICLE_RETROGRADE) != | ||
678 | - task_param_ptr->vehicle_algors.end()) | ||
679 | - retrograde_alarm(obj_key, algorithm_type_t::VEHICLE_RETROGRADE); | ||
680 | -} | ||
681 | - | ||
682 | -void CMultiSourceProcess::retrograde_alarm(const OBJ_KEY &obj_key, const algorithm_type_t &algor_type) { | ||
683 | - | ||
684 | - auto results = pedestrian_vehicle_retrograde_.get_results_by_id( | ||
685 | - ai_engine_module::obj_key_t{obj_key.obj_id, obj_key.video_id, algor_type}); | ||
686 | - | ||
687 | - bool bRetroGrade = true ; | ||
688 | - for (unsigned idx = 0; idx < results.size(); ++idx) { | ||
689 | - auto &result = results[idx]; | ||
690 | - | ||
691 | - vpc_img_info src_img; | ||
692 | - src_img.pic_desc = result.origin_img_desc; | ||
693 | - src_img.task_id = obj_key.video_id; | ||
694 | - | ||
695 | - vpc_img_info roi_img; | ||
696 | - roi_img.pic_desc = result.roi_img_desc; | ||
697 | - roi_img.task_id = obj_key.video_id; | ||
698 | - roi_img.object_id = obj_key.obj_id; | ||
699 | - | ||
700 | - if(bRetroGrade){ | ||
701 | - auto &&json_str = helpers::gen_json::gen_retrograde_json(obj_key.video_id, obj_key.obj_id, result.box, algor_type); | ||
702 | - save_snapshot_process(obj_key, algor_type, src_img, roi_img, idx, json_str); | ||
703 | - } else { | ||
704 | - VPCUtil::vpc_img_release(src_img); | ||
705 | - VPCUtil::vpc_img_release(roi_img); | ||
706 | - } | ||
707 | - | ||
708 | - if (bRetroGrade == true) { | ||
709 | - bRetroGrade = false; | ||
710 | - } | ||
711 | - | ||
712 | - } | ||
713 | - | 677 | + endframe_retrograde_trespass(obj_key); |
714 | } | 678 | } |
715 | 679 | ||
716 | void CMultiSourceProcess::vehicle_locus_finished(const OBJ_KEY obj_key) { | 680 | void CMultiSourceProcess::vehicle_locus_finished(const OBJ_KEY obj_key) { |
@@ -892,6 +856,64 @@ void CMultiSourceProcess::algorthim_retrograde_trespass(vector<string>& vpt_inte | @@ -892,6 +856,64 @@ void CMultiSourceProcess::algorthim_retrograde_trespass(vector<string>& vpt_inte | ||
892 | } | 856 | } |
893 | } | 857 | } |
894 | 858 | ||
859 | +int CMultiSourceProcess::endframe_retrograde_trespass(const OBJ_KEY &obj_key) { | ||
860 | + auto task_param_ptr = m_task_param_manager->get_task_algor_param(obj_key.video_id); | ||
861 | + | ||
862 | + /* 开启行人&机动车逆行算法模块,获取该目标的算法分析结果 返回结果+快照 最后释放资源 */ | ||
863 | + if (task_param_ptr->human_algors.find(algorithm_type_t::PEDESTRIAN_RETROGRADE) != | ||
864 | + task_param_ptr->human_algors.end()) | ||
865 | + retrograde_trespass_alarm(obj_key, algorithm_type_t::PEDESTRIAN_RETROGRADE); | ||
866 | + | ||
867 | + if (task_param_ptr->vehicle_algors.find(algorithm_type_t::VEHICLE_RETROGRADE) != | ||
868 | + task_param_ptr->vehicle_algors.end()) | ||
869 | + retrograde_trespass_alarm(obj_key, algorithm_type_t::VEHICLE_RETROGRADE); | ||
870 | + | ||
871 | + if (task_param_ptr->human_algors.find(algorithm_type_t::PEDESTRIAN_TRESPASS) != task_param_ptr->human_algors.end()) | ||
872 | + retrograde_trespass_alarm(obj_key, algorithm_type_t::PEDESTRIAN_TRESPASS); | ||
873 | + | ||
874 | + if (task_param_ptr->vehicle_algors.find(algorithm_type_t::VEHICLE_TRESPASS) != task_param_ptr->vehicle_algors.end()) | ||
875 | + retrograde_trespass_alarm(obj_key, algorithm_type_t::VEHICLE_TRESPASS); | ||
876 | +} | ||
877 | + | ||
878 | +void CMultiSourceProcess::retrograde_trespass_alarm(const OBJ_KEY &obj_key, const algorithm_type_t &algor_type) { | ||
879 | + | ||
880 | + vector<ai_engine_module::result_data_t> results ; | ||
881 | + if(algor_type == algorithm_type_t::PEDESTRIAN_RETROGRADE || algor_type == algorithm_type_t::VEHICLE_RETROGRADE){ | ||
882 | + results = pedestrian_vehicle_retrograde_.get_results_by_id(ai_engine_module::obj_key_t{obj_key.obj_id, obj_key.video_id, algor_type}); | ||
883 | + } else if(algor_type == algorithm_type_t::PEDESTRIAN_TRESPASS || algor_type == algorithm_type_t::VEHICLE_TRESPASS){ | ||
884 | + results = pedestrian_vehicle_trespass_.get_results_by_id(ai_engine_module::obj_key_t{obj_key.obj_id, obj_key.video_id, algor_type}); | ||
885 | + } else { | ||
886 | + return ; | ||
887 | + } | ||
888 | + | ||
889 | + | ||
890 | + bool bRetroGrade = true ; | ||
891 | + for (unsigned idx = 0; idx < results.size(); ++idx) { | ||
892 | + auto &result = results[idx]; | ||
893 | + | ||
894 | + vpc_img_info src_img; | ||
895 | + src_img.pic_desc = result.origin_img_desc; | ||
896 | + src_img.task_id = obj_key.video_id; | ||
897 | + | ||
898 | + vpc_img_info roi_img; | ||
899 | + roi_img.pic_desc = result.roi_img_desc; | ||
900 | + roi_img.task_id = obj_key.video_id; | ||
901 | + roi_img.object_id = obj_key.obj_id; | ||
902 | + | ||
903 | + if(bRetroGrade){ | ||
904 | + auto &&json_str = helpers::gen_json::gen_retrograde_json(obj_key.video_id, obj_key.obj_id, result.box, algor_type); | ||
905 | + save_snapshot_process(obj_key, algor_type, src_img, roi_img, idx, json_str); | ||
906 | + } else { | ||
907 | + VPCUtil::vpc_img_release(src_img); | ||
908 | + VPCUtil::vpc_img_release(roi_img); | ||
909 | + } | ||
910 | + | ||
911 | + if (bRetroGrade == true) { | ||
912 | + bRetroGrade = false; | ||
913 | + } | ||
914 | + } | ||
915 | +} | ||
916 | + | ||
895 | bool CMultiSourceProcess::save_snapshot_process(const OBJ_KEY &obj_key, const algorithm_type_t &algorithm_type, vpc_img_info src_img, vpc_img_info roi_img, | 917 | bool CMultiSourceProcess::save_snapshot_process(const OBJ_KEY &obj_key, const algorithm_type_t &algorithm_type, vpc_img_info src_img, vpc_img_info roi_img, |
896 | const long long id,const std::string &json_str) { | 918 | const long long id,const std::string &json_str) { |
897 | auto task_other_params = m_task_param_manager->get_task_other_param(obj_key.video_id); | 919 | auto task_other_params = m_task_param_manager->get_task_other_param(obj_key.video_id); |
src/ai_platform/MultiSourceProcess.h
@@ -68,8 +68,8 @@ private: | @@ -68,8 +68,8 @@ private: | ||
68 | bool save_snapshot_process(const OBJ_KEY &obj_key, const algorithm_type_t &algorithm_type, vpc_img_info img_info, vpc_img_info roi_img, | 68 | bool save_snapshot_process(const OBJ_KEY &obj_key, const algorithm_type_t &algorithm_type, vpc_img_info img_info, vpc_img_info roi_img, |
69 | const long long id,const std::string &json_str); | 69 | const long long id,const std::string &json_str); |
70 | 70 | ||
71 | - int endframe_retrograde_obj_process(const OBJ_KEY &obj_key); | ||
72 | - void retrograde_alarm(const OBJ_KEY &obj_key, const algorithm_type_t &algor_type) ; | 71 | + int endframe_retrograde_trespass(const OBJ_KEY &obj_key); |
72 | + void retrograde_trespass_alarm(const OBJ_KEY &obj_key, const algorithm_type_t &algor_type) ; | ||
73 | 73 | ||
74 | private: | 74 | private: |
75 | int m_devId; | 75 | int m_devId; |
src/demo/demo.cpp
@@ -522,7 +522,7 @@ void test_gpu(int gpuID){ | @@ -522,7 +522,7 @@ void test_gpu(int gpuID){ | ||
522 | } | 522 | } |
523 | 523 | ||
524 | std::vector<algorithm_type_t> algor_vec = {algorithm_type_t::FACE_SNAPSHOT, algorithm_type_t::HUMAN_SNAPSHOT,algorithm_type_t::ROAD_WORK_DET, algorithm_type_t::PEDESTRIAN_RETROGRADE, algorithm_type_t::VEHICLE_RETROGRADE, | 524 | std::vector<algorithm_type_t> algor_vec = {algorithm_type_t::FACE_SNAPSHOT, algorithm_type_t::HUMAN_SNAPSHOT,algorithm_type_t::ROAD_WORK_DET, algorithm_type_t::PEDESTRIAN_RETROGRADE, algorithm_type_t::VEHICLE_RETROGRADE, |
525 | - algorithm_type_t::VEHICLE_SNAPSHOT, algorithm_type_t::NONMOTOR_VEHICLE_SNAPSHOT, algorithm_type_t::VIDEO_TIMING_SNAPSHOT}; | 525 | + algorithm_type_t::PEDESTRIAN_TRESPASS, algorithm_type_t::VEHICLE_TRESPASS, algorithm_type_t::VEHICLE_SNAPSHOT, algorithm_type_t::NONMOTOR_VEHICLE_SNAPSHOT, algorithm_type_t::VIDEO_TIMING_SNAPSHOT}; |
526 | 526 | ||
527 | string task_id = createTask(handle, algor_vec, 0 + gpuID * 10); | 527 | string task_id = createTask(handle, algor_vec, 0 + gpuID * 10); |
528 | // string task_id1 = createTask(handle, algor_vec, 1 + gpuID * 10); | 528 | // string task_id1 = createTask(handle, algor_vec, 1 + gpuID * 10); |