Commit b283714b96d72ee7798f4d546da45cc779390a01

Authored by Zhao Shuaihua
1 parent d281e3a2

增加机动车不让行功能(516)

src/ai_engine_module/road_seg_correlation_algor.cpp
@@ -19,7 +19,8 @@ namespace ai_engine_module @@ -19,7 +19,8 @@ namespace ai_engine_module
19 algorithm_type_t::NONMOTOR_CEOSSPARKLINE, 19 algorithm_type_t::NONMOTOR_CEOSSPARKLINE,
20 algorithm_type_t::PERSON_CROSS, 20 algorithm_type_t::PERSON_CROSS,
21 algorithm_type_t::NONMOTOR_WRONGDIRECTION, 21 algorithm_type_t::NONMOTOR_WRONGDIRECTION,
22 - algorithm_type_t::VEHICLE_WRONGDIRECTION, 22 + algorithm_type_t::VEHICLE_WRONGDIRECTION,
  23 + algorithm_type_t::VEHICLE_NOTGIVEWAY,
23 }; 24 };
24 25
25 // 判断是否是机动车 26 // 判断是否是机动车
@@ -445,6 +446,8 @@ namespace ai_engine_module @@ -445,6 +446,8 @@ namespace ai_engine_module
445 std::map<int, int> flattened_idx_to_batch_idx; 446 std::map<int, int> flattened_idx_to_batch_idx;
446 //! 记录每个box对应的算法以及流id. 447 //! 记录每个box对应的算法以及流id.
447 std::map<unsigned, stream_idx_and_algor_seq_t> flattened_idx_to_algor_seq; 448 std::map<unsigned, stream_idx_and_algor_seq_t> flattened_idx_to_algor_seq;
  449 + // 记录每帧中的行人目标 k:pic index v:data
  450 + std::map<int, vector<input_data_wrap_t>> frame_person_data;
448 451
449 /* 1. Crop & keep some interest class. */ 452 /* 1. Crop & keep some interest class. */
450 auto taskId_iter = taskIds.begin(); 453 auto taskId_iter = taskIds.begin();
@@ -491,7 +494,7 @@ namespace ai_engine_module @@ -491,7 +494,7 @@ namespace ai_engine_module
491 continue; 494 continue;
492 495
493 stream_idx_and_algor_seq.algors.emplace(algor_type); 496 stream_idx_and_algor_seq.algors.emplace(algor_type);
494 - if (algor_type == algorithm_type_t::VEHICLE_WRONGDIRECTION ) has_vehicle_algor = true; 497 + if (algor_type == algorithm_type_t::VEHICLE_WRONGDIRECTION || algor_type == algorithm_type_t::VEHICLE_NOTGIVEWAY) has_vehicle_algor = true;
495 } 498 }
496 499
497 if (stream_idx_and_algor_seq.algors.empty()) 500 if (stream_idx_and_algor_seq.algors.empty())
@@ -537,6 +540,12 @@ namespace ai_engine_module @@ -537,6 +540,12 @@ namespace ai_engine_module
537 flattened_interest_data.emplace_back(std::move(data)); 540 flattened_interest_data.emplace_back(std::move(data));
538 flattened_idx_to_algor_seq[flattened_idx] = std::move(stream_idx_and_algor_seq); 541 flattened_idx_to_algor_seq[flattened_idx] = std::move(stream_idx_and_algor_seq);
539 flattened_idx_to_batch_idx[flattened_idx++] = n; 542 flattened_idx_to_batch_idx[flattened_idx++] = n;
  543 +
  544 + // 汇总当前帧的行人目标
  545 + if (static_cast<det_class_label_t>(box.index) == det_class_label_t::HUMAN) {
  546 + frame_person_data[n].push_back(data);
  547 + }
  548 +
540 } 549 }
541 } 550 }
542 ++taskId_iter; 551 ++taskId_iter;
@@ -628,7 +637,7 @@ namespace ai_engine_module @@ -628,7 +637,7 @@ namespace ai_engine_module
628 if ((algor_type == algorithm_type_t::NONMOTOR_IN_VEHICLELANE || algor_type == algorithm_type_t::NONMOTOR_CEOSSPARKLINE || algor_type == algorithm_type_t::NONMOTOR_WRONGDIRECTION) && !is_valid_nomotor(static_cast<det_class_label_t>(det_result.box.cls))) 637 if ((algor_type == algorithm_type_t::NONMOTOR_IN_VEHICLELANE || algor_type == algorithm_type_t::NONMOTOR_CEOSSPARKLINE || algor_type == algorithm_type_t::NONMOTOR_WRONGDIRECTION) && !is_valid_nomotor(static_cast<det_class_label_t>(det_result.box.cls)))
629 continue; 638 continue;
630 639
631 - if ((algor_type == algorithm_type_t::VEHICLE_WRONGDIRECTION) && !is_valid_car(static_cast<det_class_label_t>(det_result.box.cls))) 640 + if ((algor_type == algorithm_type_t::VEHICLE_WRONGDIRECTION || algor_type == algorithm_type_t::VEHICLE_NOTGIVEWAY) && !is_valid_car(static_cast<det_class_label_t>(det_result.box.cls)))
632 continue; 641 continue;
633 642
634 auto& e = id_to_mn_[obj_key]; 643 auto& e = id_to_mn_[obj_key];
@@ -707,9 +716,37 @@ namespace ai_engine_module @@ -707,9 +716,37 @@ namespace ai_engine_module
707 if (!isalarm) continue; 716 if (!isalarm) continue;
708 } 717 }
709 718
  719 + // 机动车不让行:针对人行道区域有行人,车辆不停车的情形
  720 + if (algor_type == algorithm_type_t::VEHICLE_NOTGIVEWAY) {
  721 + bool isalarm = false;
  722 + int stop_check_frames = 30; // 30 6s
  723 + float stop_min_move = 25;
  724 + if (m_total_obj_info[trace_obj_key].center_points.size() > stop_check_frames) { //1. 忽略太短轨迹
  725 + for (auto human_data : frame_person_data[flattened_idx_to_batch_idx[n]]) {
  726 + tr_point humanpos;
  727 + humanpos.x = (human_data.box.left + human_data.box.right) * 0.5; humanpos.y = human_data.box.bottom;
  728 + float temp_diff_x = curpos.x-humanpos.x, temp_diff_y = curpos.y-humanpos.y;
  729 + float temp_dist = sqrt(temp_diff_x * temp_diff_x + temp_diff_y * temp_diff_y);
  730 + //2.查找当前车辆附近的行人:距离小于车宽认为在附近
  731 + if (temp_dist < flattened_imgs[n].w_) {
  732 + for (auto region : crosswalk_regions) {
  733 + vector<tr_point> tr_boxes = Mbuild_area(region);
  734 + bool human_flag = McheckPointPolygon(tr_boxes, humanpos); //3.判断行人是否在人行道
  735 + if (human_flag) { //4.判断行人在人行道时车辆是否停车
  736 + float res_max_dist = 0;
  737 + float total_dist = diff_car_pos(m_total_obj_info[trace_obj_key].center_points, stop_check_frames, res_max_dist);
  738 + if (res_max_dist > stop_min_move) { isalarm = true; break; } // 未停车--->未礼让
  739 + }
  740 + }
  741 + }
  742 + if (isalarm) break;
  743 + }
  744 + }
  745 + if (!isalarm) continue;
  746 + }
  747 +
710 748
711 { 749 {
712 - // if (++e.n_frame == algor_param->n)  
713 if (++e.n_frame == algor_param->n || 750 if (++e.n_frame == algor_param->n ||
714 algor_type == algorithm_type_t::NONMOTOR_CEOSSPARKLINE || algor_type == algorithm_type_t::PERSON_CROSS ) //部分功能当前版本暂不投票 751 algor_type == algorithm_type_t::NONMOTOR_CEOSSPARKLINE || algor_type == algorithm_type_t::PERSON_CROSS ) //部分功能当前版本暂不投票
715 { 752 {
src/ai_platform/MultiSourceProcess.cpp
@@ -503,6 +503,9 @@ bool CMultiSourceProcess::task_has_vpt_algor(const std::string &amp;task_id){ @@ -503,6 +503,9 @@ bool CMultiSourceProcess::task_has_vpt_algor(const std::string &amp;task_id){
503 algor_map->find(algorithm_type_t::PERSON_RUNNING_REDLIGHTS) != algor_map->end() || 503 algor_map->find(algorithm_type_t::PERSON_RUNNING_REDLIGHTS) != algor_map->end() ||
504 algor_map->find(algorithm_type_t::PERSON_CROSS) != algor_map->end() || 504 algor_map->find(algorithm_type_t::PERSON_CROSS) != algor_map->end() ||
505 algor_map->find(algorithm_type_t::VEHICLE_WRONGDIRECTION) != algor_map->end() || 505 algor_map->find(algorithm_type_t::VEHICLE_WRONGDIRECTION) != algor_map->end() ||
  506 + algor_map->find(algorithm_type_t::VEHICLE_SOLIDLINETURNAROUND) != algor_map->end() ||
  507 + algor_map->find(algorithm_type_t::VEHICLE_NOTGIVEWAY) != algor_map->end() ||
  508 + algor_map->find(algorithm_type_t::VEHICLE_NOTDECELERATION) != algor_map->end() ||
506 algor_map->find(algorithm_type_t::TRICYCLE_MANNED) != algor_map->end() || 509 algor_map->find(algorithm_type_t::TRICYCLE_MANNED) != algor_map->end() ||
507 algor_map->find(algorithm_type_t::TRUCK_MANNED) != algor_map->end()); 510 algor_map->find(algorithm_type_t::TRUCK_MANNED) != algor_map->end());
508 } 511 }
@@ -1643,7 +1646,8 @@ void CMultiSourceProcess::algorithm_roadseg_correlation_process(vector&lt;string&gt;&amp; @@ -1643,7 +1646,8 @@ void CMultiSourceProcess::algorithm_roadseg_correlation_process(vector&lt;string&gt;&amp;
1643 algor_map->find(algorithm_type_t::NONMOTOR_CEOSSPARKLINE) != algor_map->end() || 1646 algor_map->find(algorithm_type_t::NONMOTOR_CEOSSPARKLINE) != algor_map->end() ||
1644 algor_map->find(algorithm_type_t::PERSON_CROSS) != algor_map->end() || 1647 algor_map->find(algorithm_type_t::PERSON_CROSS) != algor_map->end() ||
1645 algor_map->find(algorithm_type_t::NONMOTOR_WRONGDIRECTION) != algor_map->end() || 1648 algor_map->find(algorithm_type_t::NONMOTOR_WRONGDIRECTION) != algor_map->end() ||
1646 - algor_map->find(algorithm_type_t::VEHICLE_WRONGDIRECTION) != algor_map->end() 1649 + algor_map->find(algorithm_type_t::VEHICLE_WRONGDIRECTION) != algor_map->end() ||
  1650 + algor_map->find(algorithm_type_t::VEHICLE_NOTGIVEWAY) != algor_map->end()
1647 ) { 1651 ) {
1648 1652
1649 m_RoadSegTaskMtx.lock(); 1653 m_RoadSegTaskMtx.lock();
@@ -1841,7 +1845,7 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1841,7 +1845,7 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1841 } 1845 }
1842 1846
1843 vector<algo_type> roadseg_algor = {algorithm_type_t::PERSON_IN_VEHICLELANE, algorithm_type_t::PERSON_CROSS, algorithm_type_t::NONMOTOR_IN_VEHICLELANE, algorithm_type_t::NONMOTOR_CEOSSPARKLINE, 1847 vector<algo_type> roadseg_algor = {algorithm_type_t::PERSON_IN_VEHICLELANE, algorithm_type_t::PERSON_CROSS, algorithm_type_t::NONMOTOR_IN_VEHICLELANE, algorithm_type_t::NONMOTOR_CEOSSPARKLINE,
1844 - algorithm_type_t::NONMOTOR_WRONGDIRECTION, algorithm_type_t::VEHICLE_WRONGDIRECTION }; 1848 + algorithm_type_t::NONMOTOR_WRONGDIRECTION, algorithm_type_t::VEHICLE_WRONGDIRECTION, algorithm_type_t::VEHICLE_NOTGIVEWAY };
1845 for (size_t idx = 0; idx < roadseg_algor.size(); ++idx) { 1849 for (size_t idx = 0; idx < roadseg_algor.size(); ++idx) {
1846 if (algor_param[task_id].count(roadseg_algor.at(idx))) { 1850 if (algor_param[task_id].count(roadseg_algor.at(idx))) {
1847 const auto &algor_other_params = task_other_params->find(roadseg_algor.at(idx)); 1851 const auto &algor_other_params = task_other_params->find(roadseg_algor.at(idx));
src/ai_platform/header.h
@@ -56,6 +56,9 @@ enum class algorithm_type_t { @@ -56,6 +56,9 @@ enum class algorithm_type_t {
56 PERSON_CROSS = 512, // 行人翻越护栏 56 PERSON_CROSS = 512, // 行人翻越护栏
57 NONMOTOR_WRONGDIRECTION = 513, // 非机动车逆行 57 NONMOTOR_WRONGDIRECTION = 513, // 非机动车逆行
58 VEHICLE_WRONGDIRECTION = 514, // 机动车逆行 58 VEHICLE_WRONGDIRECTION = 514, // 机动车逆行
  59 + VEHICLE_SOLIDLINETURNAROUND = 515,// 机动车实线掉头
  60 + VEHICLE_NOTGIVEWAY = 516, // 机动车不让行
  61 + VEHICLE_NOTDECELERATION = 517, // 机动车不减速
59 }; 62 };
60 63
61 64
src/ai_platform/task_param_manager.cpp
@@ -85,6 +85,9 @@ bool copy_algor_param_aux(const algorithm_type_t &amp;algor_type, const std::string @@ -85,6 +85,9 @@ bool copy_algor_param_aux(const algorithm_type_t &amp;algor_type, const std::string
85 case algorithm_type_t::VEHICLE_WRONGDIRECTION: 85 case algorithm_type_t::VEHICLE_WRONGDIRECTION:
86 m_algor_config_params[task_id].vehicle_algors.insert(algor_type); 86 m_algor_config_params[task_id].vehicle_algors.insert(algor_type);
87 goto _manned_param_copy; 87 goto _manned_param_copy;
  88 + case algorithm_type_t::VEHICLE_NOTGIVEWAY:
  89 + m_algor_config_params[task_id].vehicle_algors.insert(algor_type);
  90 + goto _manned_param_copy;
88 case algorithm_type_t::TRUCK_MANNED: { 91 case algorithm_type_t::TRUCK_MANNED: {
89 m_algor_config_params[task_id].vehicle_algors.insert(algor_type); 92 m_algor_config_params[task_id].vehicle_algors.insert(algor_type);
90 _manned_param_copy : { 93 _manned_param_copy : {
src/demo/demo.cpp
@@ -210,7 +210,7 @@ void set_task_params(task_param &amp;tparam, const unsigned &amp;idx, const algorithm_ty @@ -210,7 +210,7 @@ void set_task_params(task_param &amp;tparam, const unsigned &amp;idx, const algorithm_ty
210 { 210 {
211 algor_params->m = 10; 211 algor_params->m = 10;
212 algor_params->n = 8; 212 algor_params->n = 8;
213 - algor_params->hs_count_threshold = 0; 213 + algor_params->hs_count_threshold = 1;
214 algor_params->obj_confidence_threshold = 0.5f; 214 algor_params->obj_confidence_threshold = 0.5f;
215 algor_params->obj_min_height = 6; 215 algor_params->obj_min_height = 6;
216 algor_params->obj_min_width = 32; 216 algor_params->obj_min_width = 32;
@@ -354,7 +354,7 @@ void set_task_params(task_param &amp;tparam, const unsigned &amp;idx, const algorithm_ty @@ -354,7 +354,7 @@ void set_task_params(task_param &amp;tparam, const unsigned &amp;idx, const algorithm_ty
354 algor_init_params->basic_param = basic_params; 354 algor_init_params->basic_param = basic_params;
355 } break; 355 } break;
356 356
357 - case algorithm_type_t::VEHICLE_WRONGDIRECTION: { 357 + case algorithm_type_t::VEHICLE_WRONGDIRECTION: {
358 auto algor_params = new algor_config_param_manned_incident; 358 auto algor_params = new algor_config_param_manned_incident;
359 { 359 {
360 algor_params->m = 5; 360 algor_params->m = 5;
@@ -375,6 +375,27 @@ void set_task_params(task_param &amp;tparam, const unsigned &amp;idx, const algorithm_ty @@ -375,6 +375,27 @@ void set_task_params(task_param &amp;tparam, const unsigned &amp;idx, const algorithm_ty
375 algor_init_params->basic_param = basic_params; 375 algor_init_params->basic_param = basic_params;
376 } break; 376 } break;
377 377
  378 + case algorithm_type_t::VEHICLE_NOTGIVEWAY: {
  379 + auto algor_params = new algor_config_param_manned_incident;
  380 + {
  381 + algor_params->m = 10;
  382 + algor_params->n = 8;
  383 + algor_params->obj_confidence_threshold = 0.5f;
  384 + algor_params->obj_min_height = 40;
  385 + algor_params->obj_min_width = 40;
  386 + }
  387 +
  388 + auto basic_params = new algor_basic_config_param_t;
  389 + {
  390 + basic_params->video_folder = "res/video_recode";
  391 + basic_params->result_folder = "res/vehicle_notgiveway";
  392 + basic_params->result_folder_little = "res/vehicle_notgiveway_little";
  393 + }
  394 +
  395 + algor_init_params->algor_param = algor_params;
  396 + algor_init_params->basic_param = basic_params;
  397 + } break;
  398 +
378 399
379 case algorithm_type_t::FACE_SNAPSHOT: { 400 case algorithm_type_t::FACE_SNAPSHOT: {
380 auto basic_params = new algor_basic_config_param_t; 401 auto basic_params = new algor_basic_config_param_t;
@@ -1016,8 +1037,8 @@ void test_gpu(int gpuID){ @@ -1016,8 +1037,8 @@ void test_gpu(int gpuID){
1016 1037
1017 std::vector<algorithm_type_t> algor_vec2 = {algorithm_type_t::NONMOTOR_VEHICLE_NOHELMET, algorithm_type_t::NONMOTOR_VEHICLE_OVERMAN, algorithm_type_t::TRICYCLE_MANNED, algorithm_type_t::TRUCK_MANNED, algorithm_type_t::NONMOTOR_VEHICLE_USEPHONE, 1038 std::vector<algorithm_type_t> algor_vec2 = {algorithm_type_t::NONMOTOR_VEHICLE_NOHELMET, algorithm_type_t::NONMOTOR_VEHICLE_OVERMAN, algorithm_type_t::TRICYCLE_MANNED, algorithm_type_t::TRUCK_MANNED, algorithm_type_t::NONMOTOR_VEHICLE_USEPHONE,
1018 algorithm_type_t::NONMOTOR_VEHICLE_REFIT, algorithm_type_t::PERSON_RUNNING_REDLIGHTS, algorithm_type_t::NONMOTOR_RUNNING_REDLIGHTS, algorithm_type_t::PERSON_IN_VEHICLELANE, algorithm_type_t::NONMOTOR_IN_VEHICLELANE, 1039 algorithm_type_t::NONMOTOR_VEHICLE_REFIT, algorithm_type_t::PERSON_RUNNING_REDLIGHTS, algorithm_type_t::NONMOTOR_RUNNING_REDLIGHTS, algorithm_type_t::PERSON_IN_VEHICLELANE, algorithm_type_t::NONMOTOR_IN_VEHICLELANE,
1019 - algorithm_type_t::NONMOTOR_CEOSSPARKLINE, algorithm_type_t::PERSON_CROSS, algorithm_type_t::NONMOTOR_WRONGDIRECTION, algorithm_type_t::VEHICLE_WRONGDIRECTION};  
1020 - std::vector<algorithm_type_t> algor_vec3 = {algorithm_type_t::NONMOTOR_WRONGDIRECTION, algorithm_type_t::VEHICLE_WRONGDIRECTION}; 1040 + algorithm_type_t::NONMOTOR_CEOSSPARKLINE, algorithm_type_t::PERSON_CROSS, algorithm_type_t::NONMOTOR_WRONGDIRECTION, algorithm_type_t::VEHICLE_WRONGDIRECTION, algorithm_type_t::VEHICLE_NOTGIVEWAY};
  1041 + std::vector<algorithm_type_t> algor_vec3 = {algorithm_type_t::PERSON_RUNNING_REDLIGHTS, algorithm_type_t::NONMOTOR_RUNNING_REDLIGHTS};
1021 1042
1022 /* 1043 /*
1023 int repeat_num = 1000; 1044 int repeat_num = 1000;
@@ -1039,22 +1060,22 @@ void test_gpu(int gpuID){ @@ -1039,22 +1060,22 @@ void test_gpu(int gpuID){
1039 // createTask(handle, algor_vec, 1); 1060 // createTask(handle, algor_vec, 1);
1040 // createTask(handle, algor_vec, 2); 1061 // createTask(handle, algor_vec, 2);
1041 // createTask(handle, algor_vec, 3); 1062 // createTask(handle, algor_vec, 3);
1042 - createTask(handle, algor_vec3, 4);  
1043 - createTask(handle, algor_vec3, 5);  
1044 - createTask(handle, algor_vec3, 6);  
1045 - createTask(handle, algor_vec3, 7);  
1046 - createTask(handle, algor_vec3, 8);  
1047 - createTask(handle, algor_vec3, 9);  
1048 - createTask(handle, algor_vec3, 10);  
1049 - createTask(handle, algor_vec3, 11);  
1050 - createTask(handle, algor_vec3, 12);  
1051 - createTask(handle, algor_vec3, 13);  
1052 - createTask(handle, algor_vec3, 14);  
1053 - createTask(handle, algor_vec3, 15);  
1054 - createTask(handle, algor_vec3, 16);  
1055 - createTask(handle, algor_vec3, 17);  
1056 - createTask(handle, algor_vec3, 18);  
1057 - createTask(handle, algor_vec3, 19); 1063 + createTask(handle, algor_vec2, 4);
  1064 + createTask(handle, algor_vec2, 5);
  1065 + createTask(handle, algor_vec2, 6);
  1066 + createTask(handle, algor_vec2, 7);
  1067 + createTask(handle, algor_vec2, 8);
  1068 + createTask(handle, algor_vec2, 9);
  1069 + createTask(handle, algor_vec2, 10);
  1070 + createTask(handle, algor_vec2, 11);
  1071 + createTask(handle, algor_vec2, 12);
  1072 + createTask(handle, algor_vec2, 13);
  1073 + createTask(handle, algor_vec2, 14);
  1074 + createTask(handle, algor_vec2, 15);
  1075 + createTask(handle, algor_vec2, 16);
  1076 + createTask(handle, algor_vec2, 17);
  1077 + createTask(handle, algor_vec2, 18);
  1078 + createTask(handle, algor_vec2, 19);
1058 // createTask(handle, algor_vec2, 20); 1079 // createTask(handle, algor_vec2, 20);
1059 // createTask(handle, algor_vec2, 21); 1080 // createTask(handle, algor_vec2, 21);
1060 // createTask(handle, algor_vec2, 22); 1081 // createTask(handle, algor_vec2, 22);
src/reprocessing_module/snapshot_reprocessing.cpp
@@ -393,8 +393,9 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve @@ -393,8 +393,9 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve
393 algor_param[task_id].count(algorithm_type_t::PERSON_RUNNING_REDLIGHTS) || algor_param[task_id].count(algorithm_type_t::NONMOTOR_RUNNING_REDLIGHTS) || 393 algor_param[task_id].count(algorithm_type_t::PERSON_RUNNING_REDLIGHTS) || algor_param[task_id].count(algorithm_type_t::NONMOTOR_RUNNING_REDLIGHTS) ||
394 algor_param[task_id].count(algorithm_type_t::PERSON_IN_VEHICLELANE) || algor_param[task_id].count(algorithm_type_t::NONMOTOR_IN_VEHICLELANE) || 394 algor_param[task_id].count(algorithm_type_t::PERSON_IN_VEHICLELANE) || algor_param[task_id].count(algorithm_type_t::NONMOTOR_IN_VEHICLELANE) ||
395 algor_param[task_id].count(algorithm_type_t::NONMOTOR_CEOSSPARKLINE) || algor_param[task_id].count(algorithm_type_t::PERSON_CROSS) || 395 algor_param[task_id].count(algorithm_type_t::NONMOTOR_CEOSSPARKLINE) || algor_param[task_id].count(algorithm_type_t::PERSON_CROSS) ||
396 - algor_param[task_id].count(algorithm_type_t::NONMOTOR_WRONGDIRECTION) || algor_param[task_id].count(algorithm_type_t::VEHICLE_WRONGDIRECTION)  
397 - )) 396 + algor_param[task_id].count(algorithm_type_t::NONMOTOR_WRONGDIRECTION) || algor_param[task_id].count(algorithm_type_t::VEHICLE_WRONGDIRECTION) ||
  397 + algor_param[task_id].count(algorithm_type_t::VEHICLE_SOLIDLINETURNAROUND) || algor_param[task_id].count(algorithm_type_t::VEHICLE_NOTGIVEWAY) ||
  398 + algor_param[task_id].count(algorithm_type_t::VEHICLE_NOTDECELERATION)))
398 continue; 399 continue;
399 400
400 if(!snapshot_legal_minarea(index, cur_real_width, cur_real_height)){ 401 if(!snapshot_legal_minarea(index, cur_real_width, cur_real_height)){
@@ -460,8 +461,9 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve @@ -460,8 +461,9 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve
460 algor_param[task_id].count(algorithm_type_t::PERSON_RUNNING_REDLIGHTS) || algor_param[task_id].count(algorithm_type_t::NONMOTOR_RUNNING_REDLIGHTS) || 461 algor_param[task_id].count(algorithm_type_t::PERSON_RUNNING_REDLIGHTS) || algor_param[task_id].count(algorithm_type_t::NONMOTOR_RUNNING_REDLIGHTS) ||
461 algor_param[task_id].count(algorithm_type_t::PERSON_IN_VEHICLELANE) || algor_param[task_id].count(algorithm_type_t::NONMOTOR_IN_VEHICLELANE) || 462 algor_param[task_id].count(algorithm_type_t::PERSON_IN_VEHICLELANE) || algor_param[task_id].count(algorithm_type_t::NONMOTOR_IN_VEHICLELANE) ||
462 algor_param[task_id].count(algorithm_type_t::NONMOTOR_CEOSSPARKLINE) || algor_param[task_id].count(algorithm_type_t::PERSON_CROSS) || 463 algor_param[task_id].count(algorithm_type_t::NONMOTOR_CEOSSPARKLINE) || algor_param[task_id].count(algorithm_type_t::PERSON_CROSS) ||
463 - algor_param[task_id].count(algorithm_type_t::NONMOTOR_WRONGDIRECTION) || algor_param[task_id].count(algorithm_type_t::VEHICLE_WRONGDIRECTION)  
464 - )) 464 + algor_param[task_id].count(algorithm_type_t::NONMOTOR_WRONGDIRECTION) || algor_param[task_id].count(algorithm_type_t::VEHICLE_WRONGDIRECTION) ||
  465 + algor_param[task_id].count(algorithm_type_t::VEHICLE_SOLIDLINETURNAROUND) || algor_param[task_id].count(algorithm_type_t::VEHICLE_NOTGIVEWAY) ||
  466 + algor_param[task_id].count(algorithm_type_t::VEHICLE_NOTDECELERATION)))
465 continue; 467 continue;
466 468
467 // 过滤边缘位置 469 // 过滤边缘位置