Commit 836a7b9c0cf4d51fdd5786724e51ca913e173a46

Authored by Zhao Shuaihua
1 parent 473215b4

-不再保存非最佳抓拍图之外的抓拍小图;不含非机动车道的不判占用机动车道

-增加闯红灯 横穿马路 越过停止线 实线掉头 不让行等不易判别事件的报警图推送
src/ai_engine_module/ai_engine_header.h
@@ -83,4 +83,12 @@ typedef struct result_data_t { @@ -83,4 +83,12 @@ typedef struct result_data_t {
83 acldvppPicDesc* roi_img_desc{nullptr}; 83 acldvppPicDesc* roi_img_desc{nullptr};
84 } result_data_t; 84 } result_data_t;
85 85
  86 +
  87 +typedef struct Alarm_Snapshot {
  88 + vpc_img_info snapShot;
  89 + vpc_img_info snapShotLittle;
  90 + int algor_type;
  91 + box_t box;
  92 +} Alarm_Snapshot;
  93 +
86 } // namespace ai_engine_module 94 } // namespace ai_engine_module
src/ai_engine_module/motocycle_hs_process.cpp
@@ -238,6 +238,7 @@ namespace ai_engine_module @@ -238,6 +238,7 @@ namespace ai_engine_module
238 data.box.right = right; 238 data.box.right = right;
239 data.box.bottom = bottom; 239 data.box.bottom = bottom;
240 data.box.score = box.confidence; 240 data.box.score = box.confidence;
  241 + data.box.cls = box.index;
241 data.taskId = taskId; 242 data.taskId = taskId;
242 data.objId = box.id; 243 data.objId = box.id;
243 // data.id = obj_key_t{ box.id, taskId, algorithm_type_t::TRUCK_MANNED }; 244 // data.id = obj_key_t{ box.id, taskId, algorithm_type_t::TRUCK_MANNED };
src/ai_engine_module/motocycle_phone_process.cpp
@@ -241,6 +241,7 @@ namespace ai_engine_module @@ -241,6 +241,7 @@ namespace ai_engine_module
241 data.box.right = right; 241 data.box.right = right;
242 data.box.bottom = bottom; 242 data.box.bottom = bottom;
243 data.box.score = box.confidence; 243 data.box.score = box.confidence;
  244 + data.box.cls = box.index;
244 data.taskId = taskId; 245 data.taskId = taskId;
245 data.objId = box.id; 246 data.objId = box.id;
246 // data.id = obj_key_t{ box.id, taskId, algorithm_type_t::TRUCK_MANNED }; 247 // data.id = obj_key_t{ box.id, taskId, algorithm_type_t::TRUCK_MANNED };
src/ai_engine_module/motocycle_refit_phone_process.cpp
@@ -258,6 +258,7 @@ namespace ai_engine_module @@ -258,6 +258,7 @@ namespace ai_engine_module
258 data.box.right = right; 258 data.box.right = right;
259 data.box.bottom = bottom; 259 data.box.bottom = bottom;
260 data.box.score = box.confidence; 260 data.box.score = box.confidence;
  261 + data.box.cls = box.index;
261 data.taskId = taskId; 262 data.taskId = taskId;
262 data.objId = box.id; 263 data.objId = box.id;
263 264
src/ai_engine_module/motocycle_refit_process.cpp
@@ -243,6 +243,7 @@ namespace ai_engine_module @@ -243,6 +243,7 @@ namespace ai_engine_module
243 data.box.right = right; 243 data.box.right = right;
244 data.box.bottom = bottom; 244 data.box.bottom = bottom;
245 data.box.score = box.confidence; 245 data.box.score = box.confidence;
  246 + data.box.cls = box.index;
246 data.taskId = taskId; 247 data.taskId = taskId;
247 data.objId = box.id; 248 data.objId = box.id;
248 // data.id = obj_key_t{ box.id, taskId, algorithm_type_t::TRUCK_MANNED }; 249 // data.id = obj_key_t{ box.id, taskId, algorithm_type_t::TRUCK_MANNED };
src/ai_engine_module/road_seg_correlation_algor.cpp
@@ -634,7 +634,7 @@ namespace ai_engine_module @@ -634,7 +634,7 @@ namespace ai_engine_module
634 std::vector<sy_img> flattened_imgs(0); 634 std::vector<sy_img> flattened_imgs(0);
635 std::vector<vpc_img_info> flattened_vpc_imgs(0); 635 std::vector<vpc_img_info> flattened_vpc_imgs(0);
636 std::vector<input_data_wrap_t> flattened_interest_data(0); // 636 std::vector<input_data_wrap_t> flattened_interest_data(0); //
637 - vector<vector<vector<int>>> vehiclelanes_regions, crosswalk_regions, solidlines, roadseg_fence_regions, road_fence_regions; 637 + vector<vector<vector<int>>> vehiclelanes_regions, nonvehicle_regions, crosswalk_regions, solidlines, roadseg_fence_regions, road_fence_regions;
638 vector<vector<vector<tr_point>>> processed_roadseg_fences; 638 vector<vector<vector<tr_point>>> processed_roadseg_fences;
639 VPCUtil* pVpcUtil = VPCUtil::getInstance(); 639 VPCUtil* pVpcUtil = VPCUtil::getInstance();
640 for (int n = 0; n < n_images; ++n) 640 for (int n = 0; n < n_images; ++n)
@@ -645,6 +645,7 @@ namespace ai_engine_module @@ -645,6 +645,7 @@ namespace ai_engine_module
645 int src_img_h = src_img->getHeight(); 645 int src_img_h = src_img->getHeight();
646 646
647 vector<vector<int>> vehiclelanes_region; //机动车区域 647 vector<vector<int>> vehiclelanes_region; //机动车区域
  648 + vector<vector<int>> nonvehicle_region; //非机动车区域
648 vector<vector<int>> crosswalk_region; //人行道+十字路口区域 649 vector<vector<int>> crosswalk_region; //人行道+十字路口区域
649 vector<vector<int>> solidline; //黄实线+白实线 650 vector<vector<int>> solidline; //黄实线+白实线
650 for (unsigned i = 0; i < labels[n].size(); ++i) { 651 for (unsigned i = 0; i < labels[n].size(); ++i) {
@@ -652,6 +653,10 @@ namespace ai_engine_module @@ -652,6 +653,10 @@ namespace ai_engine_module
652 if ((label == label_t::vehicle_lanes)) { 653 if ((label == label_t::vehicle_lanes)) {
653 vector<int> cur_region(traffic_region[n][i].begin(),traffic_region[n][i].end()); 654 vector<int> cur_region(traffic_region[n][i].begin(),traffic_region[n][i].end());
654 vehiclelanes_region.push_back(cur_region); 655 vehiclelanes_region.push_back(cur_region);
  656 + }
  657 + if ((label == label_t::nonvehicle_lanes)) {
  658 + vector<int> cur_region(traffic_region[n][i].begin(),traffic_region[n][i].end());
  659 + nonvehicle_region.push_back(cur_region);
655 } 660 }
656 if ((label == label_t::crosswalk || label == label_t::interestion_area)) { 661 if ((label == label_t::crosswalk || label == label_t::interestion_area)) {
657 vector<int> cur_region(traffic_region[n][i].begin(),traffic_region[n][i].end()); 662 vector<int> cur_region(traffic_region[n][i].begin(),traffic_region[n][i].end());
@@ -663,6 +668,7 @@ namespace ai_engine_module @@ -663,6 +668,7 @@ namespace ai_engine_module
663 } 668 }
664 } 669 }
665 vehiclelanes_regions.push_back(vehiclelanes_region); 670 vehiclelanes_regions.push_back(vehiclelanes_region);
  671 + nonvehicle_regions.push_back(nonvehicle_region);
666 crosswalk_regions.push_back(crosswalk_region); 672 crosswalk_regions.push_back(crosswalk_region);
667 solidlines.push_back(solidline); 673 solidlines.push_back(solidline);
668 674
@@ -733,7 +739,7 @@ namespace ai_engine_module @@ -733,7 +739,7 @@ namespace ai_engine_module
733 data.box.right = right; data.box.bottom = bottom; 739 data.box.right = right; data.box.bottom = bottom;
734 data.box.score = box.confidence; data.box.cls = box.index; 740 data.box.score = box.confidence; data.box.cls = box.index;
735 data.taskId = taskId; data.objId = box.id; 741 data.taskId = taskId; data.objId = box.id;
736 - 742 +#if 0
737 // 抠图 743 // 抠图
738 video_object_info obj; 744 video_object_info obj;
739 strcpy(obj.task_id, taskId.c_str()); 745 strcpy(obj.task_id, taskId.c_str());
@@ -742,12 +748,12 @@ namespace ai_engine_module @@ -742,12 +748,12 @@ namespace ai_engine_module
742 obj.right = right; obj.bottom = bottom; 748 obj.right = right; obj.bottom = bottom;
743 749
744 vpc_img_info img_info = pVpcUtil->crop(src_img, obj); 750 vpc_img_info img_info = pVpcUtil->crop(src_img, obj);
745 - 751 +#endif
746 sy_img img; 752 sy_img img;
747 img.w_ = width; 753 img.w_ = width;
748 img.h_ = height; 754 img.h_ = height;
749 img.c_ = src_img->getChannel(); 755 img.c_ = src_img->getChannel();
750 - 756 +#if 0
751 if (img_info.pic_desc != nullptr) { 757 if (img_info.pic_desc != nullptr) {
752 void *outputDataDev = acldvppGetPicDescData(img_info.pic_desc); 758 void *outputDataDev = acldvppGetPicDescData(img_info.pic_desc);
753 img.data_ = reinterpret_cast<unsigned char*>(outputDataDev); 759 img.data_ = reinterpret_cast<unsigned char*>(outputDataDev);
@@ -757,12 +763,10 @@ namespace ai_engine_module @@ -757,12 +763,10 @@ namespace ai_engine_module
757 src_img_w, src_img_h, data.box.left, data.box.top, data.box.right, data.box.bottom); 763 src_img_w, src_img_h, data.box.left, data.box.top, data.box.right, data.box.bottom);
758 continue; 764 continue;
759 } 765 }
760 -  
761 766
762 -  
763 -  
764 - flattened_imgs.emplace_back(std::move(img));  
765 flattened_vpc_imgs.emplace_back(std::move(img_info)); 767 flattened_vpc_imgs.emplace_back(std::move(img_info));
  768 +#endif
  769 + flattened_imgs.emplace_back(std::move(img));
766 flattened_interest_data.emplace_back(std::move(data)); 770 flattened_interest_data.emplace_back(std::move(data));
767 flattened_idx_to_algor_seq[flattened_idx] = std::move(stream_idx_and_algor_seq); 771 flattened_idx_to_algor_seq[flattened_idx] = std::move(stream_idx_and_algor_seq);
768 flattened_idx_to_batch_idx[flattened_idx++] = n; 772 flattened_idx_to_batch_idx[flattened_idx++] = n;
@@ -813,6 +817,7 @@ namespace ai_engine_module @@ -813,6 +817,7 @@ namespace ai_engine_module
813 // auto &model_result = model_results[flattened_idx_to_batch_idx[n]]; 817 // auto &model_result = model_results[flattened_idx_to_batch_idx[n]];
814 818
815 vector<vector<int>> vehiclelanes_region = vehiclelanes_regions[flattened_idx_to_batch_idx[n]]; //机动车区域 819 vector<vector<int>> vehiclelanes_region = vehiclelanes_regions[flattened_idx_to_batch_idx[n]]; //机动车区域
  820 + vector<vector<int>> nonvehicle_region = nonvehicle_regions[flattened_idx_to_batch_idx[n]]; //非机动车区域
816 vector<vector<int>> crosswalk_region = crosswalk_regions[flattened_idx_to_batch_idx[n]]; //人行道+十字路口区域 821 vector<vector<int>> crosswalk_region = crosswalk_regions[flattened_idx_to_batch_idx[n]]; //人行道+十字路口区域
817 vector<vector<int>> solidline = solidlines[flattened_idx_to_batch_idx[n]]; //黄实线+白实线 822 vector<vector<int>> solidline = solidlines[flattened_idx_to_batch_idx[n]]; //黄实线+白实线
818 vector<vector<int>> roadseg_fence_region = roadseg_fence_regions[flattened_idx_to_batch_idx[n]];//车道分割护栏区域 823 vector<vector<int>> roadseg_fence_region = roadseg_fence_regions[flattened_idx_to_batch_idx[n]];//车道分割护栏区域
@@ -856,6 +861,7 @@ namespace ai_engine_module @@ -856,6 +861,7 @@ namespace ai_engine_module
856 int src_w = src_img->getWidth(), src_h = src_img->getHeight(); 861 int src_w = src_img->getWidth(), src_h = src_img->getHeight();
857 // 行人/非机动车占用机动车道 862 // 行人/非机动车占用机动车道
858 if (algor_type == algorithm_type_t::PERSON_IN_VEHICLELANE || algor_type == algorithm_type_t::NONMOTOR_IN_VEHICLELANE) { 863 if (algor_type == algorithm_type_t::PERSON_IN_VEHICLELANE || algor_type == algorithm_type_t::NONMOTOR_IN_VEHICLELANE) {
  864 + if (nonvehicle_region.empty()) continue; //没有非机动车道的不判占用机动车道
859 bool isalarm = false; 865 bool isalarm = false;
860 float res_max_dist = 0; 866 float res_max_dist = 0;
861 int check_frames = m_total_obj_info[trace_obj_key].center_points.size(); 867 int check_frames = m_total_obj_info[trace_obj_key].center_points.size();
@@ -1062,10 +1068,12 @@ namespace ai_engine_module @@ -1062,10 +1068,12 @@ namespace ai_engine_module
1062 result.taskId = det_result.taskId; 1068 result.taskId = det_result.taskId;
1063 result.objId = det_result.objId; 1069 result.objId = det_result.objId;
1064 result.algor_type = algor_type; 1070 result.algor_type = algor_type;
1065 -#if 0 /*暂不保存报警时刻的抓拍图,有需要再启用*/ 1071 +#if 1 /*抓拍大图*/
1066 // 原图 1072 // 原图
1067 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img); 1073 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img);
1068 result.origin_img_desc = src_img_info.pic_desc; 1074 result.origin_img_desc = src_img_info.pic_desc;
  1075 +#endif
  1076 +#if 0 /*暂不保存报警时刻的抓拍小图,有需要再启用*/
1069 // 抠图--拷贝后赋值 1077 // 抠图--拷贝后赋值
1070 void *outputDataDev = acldvppGetPicDescData(flattened_vpc_imgs[n].pic_desc); 1078 void *outputDataDev = acldvppGetPicDescData(flattened_vpc_imgs[n].pic_desc);
1071 int nBufferSize = acldvppGetPicDescSize(flattened_vpc_imgs[n].pic_desc); 1079 int nBufferSize = acldvppGetPicDescSize(flattened_vpc_imgs[n].pic_desc);
@@ -1098,9 +1106,9 @@ namespace ai_engine_module @@ -1098,9 +1106,9 @@ namespace ai_engine_module
1098 e.reset(); 1106 e.reset();
1099 1107
1100 } 1108 }
1101 - 1109 +#if 0
1102 VPCUtil::vpc_img_release(flattened_vpc_imgs[n]); //flattened_imgs[n].data_ 1110 VPCUtil::vpc_img_release(flattened_vpc_imgs[n]); //flattened_imgs[n].data_
1103 - 1111 +#endif
1104 } 1112 }
1105 /* 1113 /*
1106 for (int n = 0; n < n_input_image; ++n) 1114 for (int n = 0; n < n_input_image; ++n)
src/ai_engine_module/traffic_light_process.cpp
@@ -470,7 +470,7 @@ namespace ai_engine_module @@ -470,7 +470,7 @@ namespace ai_engine_module
470 data.box.right = right; data.box.bottom = bottom; 470 data.box.right = right; data.box.bottom = bottom;
471 data.box.score = box.confidence; data.box.cls = box.index; 471 data.box.score = box.confidence; data.box.cls = box.index;
472 data.taskId = taskId; data.objId = box.id; 472 data.taskId = taskId; data.objId = box.id;
473 - 473 +#if 0
474 // 抠图 474 // 抠图
475 video_object_info obj; 475 video_object_info obj;
476 strcpy(obj.task_id, taskId.c_str()); 476 strcpy(obj.task_id, taskId.c_str());
@@ -479,12 +479,12 @@ namespace ai_engine_module @@ -479,12 +479,12 @@ namespace ai_engine_module
479 obj.right = right; obj.bottom = bottom; 479 obj.right = right; obj.bottom = bottom;
480 480
481 vpc_img_info img_info = pVpcUtil->crop(src_img, obj); 481 vpc_img_info img_info = pVpcUtil->crop(src_img, obj);
482 - 482 +#endif
483 sy_img img; 483 sy_img img;
484 img.w_ = width; 484 img.w_ = width;
485 img.h_ = height; 485 img.h_ = height;
486 img.c_ = src_img->getChannel(); 486 img.c_ = src_img->getChannel();
487 - 487 +#if 0
488 if (img_info.pic_desc != nullptr) { 488 if (img_info.pic_desc != nullptr) {
489 void *outputDataDev = acldvppGetPicDescData(img_info.pic_desc); 489 void *outputDataDev = acldvppGetPicDescData(img_info.pic_desc);
490 img.data_ = reinterpret_cast<unsigned char*>(outputDataDev); 490 img.data_ = reinterpret_cast<unsigned char*>(outputDataDev);
@@ -495,8 +495,9 @@ namespace ai_engine_module @@ -495,8 +495,9 @@ namespace ai_engine_module
495 continue; 495 continue;
496 } 496 }
497 497
498 - flattened_imgs.emplace_back(std::move(img));  
499 flattened_vpc_imgs.emplace_back(std::move(img_info)); 498 flattened_vpc_imgs.emplace_back(std::move(img_info));
  499 +#endif
  500 + flattened_imgs.emplace_back(std::move(img));
500 flattened_interest_data.emplace_back(std::move(data)); 501 flattened_interest_data.emplace_back(std::move(data));
501 flattened_idx_to_algor_seq[flattened_idx] = std::move(stream_idx_and_algor_seq); 502 flattened_idx_to_algor_seq[flattened_idx] = std::move(stream_idx_and_algor_seq);
502 flattened_idx_to_batch_idx[flattened_idx++] = n; 503 flattened_idx_to_batch_idx[flattened_idx++] = n;
@@ -544,7 +545,7 @@ namespace ai_engine_module @@ -544,7 +545,7 @@ namespace ai_engine_module
544 const label_t label = static_cast<label_t>(box.index); 545 const label_t label = static_cast<label_t>(box.index);
545 if (!is_valid_label(label)) 546 if (!is_valid_label(label))
546 continue; 547 continue;
547 - // if (box.left < 1200 || box.top < 159 || box.right > 1307 || box.bottom > 212) continue; // 限制红绿灯的出现位置(泰兴黄桥锦润福府路口) 548 + if (box.left < 1200 || box.top < 159 || box.right > 1307 || box.bottom > 212) continue; // 限制红绿灯的出现位置(泰兴黄桥锦润福府路口)==================24.1.3
548 LOG_TRACE("task id is {} obj_id {} label {} index {} score {}", task_id, objId, label, box.index, box.confidence); 549 LOG_TRACE("task id is {} obj_id {} label {} index {} score {}", task_id, objId, label, box.index, box.confidence);
549 red_cnt ++; 550 red_cnt ++;
550 } 551 }
@@ -622,10 +623,12 @@ namespace ai_engine_module @@ -622,10 +623,12 @@ namespace ai_engine_module
622 result.taskId = det_result.taskId; 623 result.taskId = det_result.taskId;
623 result.objId = det_result.objId; 624 result.objId = det_result.objId;
624 result.algor_type = algor_type; 625 result.algor_type = algor_type;
625 -#if 0 /*暂不保存报警时刻的抓拍图,有需要再启用*/ 626 +#if 1 /*抓拍大图*/
626 // 原图 627 // 原图
627 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img); 628 vpc_img_info src_img_info = VPCUtil::vpc_devMem2vpcImg(src_img);
628 result.origin_img_desc = src_img_info.pic_desc; 629 result.origin_img_desc = src_img_info.pic_desc;
  630 +#endif
  631 +#if 0 /*暂不保存报警时刻的抓拍图,有需要再启用*/
629 // 抠图--拷贝后赋值 632 // 抠图--拷贝后赋值
630 void *outputDataDev = acldvppGetPicDescData(flattened_vpc_imgs[n].pic_desc); 633 void *outputDataDev = acldvppGetPicDescData(flattened_vpc_imgs[n].pic_desc);
631 int nBufferSize = acldvppGetPicDescSize(flattened_vpc_imgs[n].pic_desc); 634 int nBufferSize = acldvppGetPicDescSize(flattened_vpc_imgs[n].pic_desc);
@@ -658,9 +661,9 @@ namespace ai_engine_module @@ -658,9 +661,9 @@ namespace ai_engine_module
658 e.reset(); 661 e.reset();
659 662
660 } 663 }
661 - 664 +#if 0
662 VPCUtil::vpc_img_release(flattened_vpc_imgs[n]); //flattened_imgs[n].data_ 665 VPCUtil::vpc_img_release(flattened_vpc_imgs[n]); //flattened_imgs[n].data_
663 - 666 +#endif
664 } 667 }
665 } 668 }
666 669
src/ai_engine_module/tricycle_manned_process.cpp
@@ -168,6 +168,7 @@ namespace ai_engine_module @@ -168,6 +168,7 @@ namespace ai_engine_module
168 data.box.left = left; 168 data.box.left = left;
169 data.box.right = right; 169 data.box.right = right;
170 data.box.bottom = bottom; 170 data.box.bottom = bottom;
  171 + data.box.cls = box.index;
171 data.box.score = box.confidence; 172 data.box.score = box.confidence;
172 data.taskId = taskId; 173 data.taskId = taskId;
173 data.objId = box.id; 174 data.objId = box.id;
src/ai_engine_module/truck_manned_process.cpp
@@ -302,7 +302,7 @@ namespace ai_engine_module @@ -302,7 +302,7 @@ namespace ai_engine_module
302 302
303 data.box.top = top; data.box.left = left; 303 data.box.top = top; data.box.left = left;
304 data.box.right = right; data.box.bottom = bottom; 304 data.box.right = right; data.box.bottom = bottom;
305 - data.box.score = box.confidence; 305 + data.box.score = box.confidence; data.box.cls = box.index;
306 data.taskId = taskId; data.objId = box.id; 306 data.taskId = taskId; data.objId = box.id;
307 data.id = obj_key_t{ box.id, taskId, algorithm_type_t::TRUCK_MANNED }; 307 data.id = obj_key_t{ box.id, taskId, algorithm_type_t::TRUCK_MANNED };
308 data.person_motocycle_cnt = person_motocycle_inarea; 308 data.person_motocycle_cnt = person_motocycle_inarea;
src/ai_platform/MultiSourceProcess.cpp
@@ -1658,7 +1658,8 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1658,7 +1658,8 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1658 std::string video_folder = "", result_folder = "", result_folder_little = ""; //要求各事件使用同一个视频保存地址,否则会被最后一个事件的地址覆盖 1658 std::string video_folder = "", result_folder = "", result_folder_little = ""; //要求各事件使用同一个视频保存地址,否则会被最后一个事件的地址覆盖
1659 auto task_other_params = m_task_param_manager->get_task_other_param(task_id); 1659 auto task_other_params = m_task_param_manager->get_task_other_param(task_id);
1660 std::vector<int> algorithm_types; 1660 std::vector<int> algorithm_types;
1661 - bool save_single_algor_pic = false; // 是否保存单算法的报警图片(若设置为true需先去掉算法内部注释!!!) 1661 + std::vector<ai_engine_module::Alarm_Snapshot> alarm_snapshots;
  1662 + bool save_single_algor_pic = true; // 是否保存单算法的报警图片(若设置为true需先去掉算法内部注释!!!)
1662 1663
1663 if (task_param_ptr->nonmotor_vehicle_algors.find(algorithm_type_t::TRICYCLE_MANNED) != task_param_ptr->nonmotor_vehicle_algors.end()) { 1664 if (task_param_ptr->nonmotor_vehicle_algors.find(algorithm_type_t::TRICYCLE_MANNED) != task_param_ptr->nonmotor_vehicle_algors.end()) {
1664 const auto &algor_other_params = task_other_params->find(algorithm_type_t::TRICYCLE_MANNED); 1665 const auto &algor_other_params = task_other_params->find(algorithm_type_t::TRICYCLE_MANNED);
@@ -1673,9 +1674,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1673,9 +1674,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1673 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id; 1674 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id;
1674 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id; 1675 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id;
1675 1676
1676 - if (save_single_algor_pic) {  
1677 - auto json_str = helpers::gen_json::gen_manned_json(obj_key.video_id, obj_key.obj_id, result->box, algorithm_type_t::TRICYCLE_MANNED);  
1678 - save_snapshot_process(obj_key, algorithm_type_t::TRICYCLE_MANNED, src_img, roi_img, 0, json_str); 1677 + // if (save_single_algor_pic) {
  1678 + if (0) {
  1679 + ai_engine_module::Alarm_Snapshot alarm_snapshot; alarm_snapshot.algor_type = (int)algorithm_type_t::TRICYCLE_MANNED;
  1680 + alarm_snapshot.snapShot = src_img; alarm_snapshot.snapShotLittle = roi_img; alarm_snapshot.box = result->box;
  1681 + alarm_snapshots.push_back(alarm_snapshot);
1679 } else { 1682 } else {
1680 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img); 1683 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img);
1681 } 1684 }
@@ -1696,9 +1699,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1696,9 +1699,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1696 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id; 1699 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id;
1697 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id; 1700 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id;
1698 1701
1699 - if (save_single_algor_pic) {  
1700 - auto json_str = helpers::gen_json::gen_manned_json(obj_key.video_id, obj_key.obj_id, result->box, algorithm_type_t::TRUCK_MANNED);  
1701 - save_snapshot_process(obj_key, algorithm_type_t::TRUCK_MANNED, src_img, roi_img, 0, json_str); 1702 + // if (save_single_algor_pic) {
  1703 + if (0) {
  1704 + ai_engine_module::Alarm_Snapshot alarm_snapshot; alarm_snapshot.algor_type = (int)algorithm_type_t::TRUCK_MANNED;
  1705 + alarm_snapshot.snapShot = src_img; alarm_snapshot.snapShotLittle = roi_img; alarm_snapshot.box = result->box;
  1706 + alarm_snapshots.push_back(alarm_snapshot);
1702 } else { 1707 } else {
1703 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img); 1708 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img);
1704 } 1709 }
@@ -1721,9 +1726,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1721,9 +1726,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1721 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id; 1726 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id;
1722 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id; 1727 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id;
1723 1728
1724 - if (save_single_algor_pic) {  
1725 - auto json_str = helpers::gen_json::gen_manned_json(obj_key.video_id, obj_key.obj_id, result->box, motorhs_algor.at(idx));  
1726 - save_snapshot_process(obj_key, motorhs_algor.at(idx), src_img, roi_img, 0, json_str); 1729 + // if (save_single_algor_pic) {
  1730 + if (0) {
  1731 + ai_engine_module::Alarm_Snapshot alarm_snapshot; alarm_snapshot.algor_type = (int)motorhs_algor.at(idx);
  1732 + alarm_snapshot.snapShot = src_img; alarm_snapshot.snapShotLittle = roi_img; alarm_snapshot.box = result->box;
  1733 + alarm_snapshots.push_back(alarm_snapshot);
1727 } else { 1734 } else {
1728 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img); 1735 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img);
1729 } 1736 }
@@ -1746,9 +1753,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1746,9 +1753,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1746 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id; 1753 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id;
1747 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id; 1754 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id;
1748 1755
1749 - if (save_single_algor_pic) {  
1750 - auto json_str = helpers::gen_json::gen_manned_json(obj_key.video_id, obj_key.obj_id, result->box, algorithm_type_t::NONMOTOR_VEHICLE_USEPHONE);  
1751 - save_snapshot_process(obj_key, algorithm_type_t::NONMOTOR_VEHICLE_USEPHONE, src_img, roi_img, 0, json_str); 1756 + // if (save_single_algor_pic) {
  1757 + if (0) {
  1758 + ai_engine_module::Alarm_Snapshot alarm_snapshot; alarm_snapshot.algor_type = (int)algorithm_type_t::NONMOTOR_VEHICLE_USEPHONE;
  1759 + alarm_snapshot.snapShot = src_img; alarm_snapshot.snapShotLittle = roi_img; alarm_snapshot.box = result->box;
  1760 + alarm_snapshots.push_back(alarm_snapshot);
1752 } else { 1761 } else {
1753 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img); 1762 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img);
1754 } 1763 }
@@ -1770,9 +1779,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1770,9 +1779,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1770 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id; 1779 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id;
1771 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id; 1780 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id;
1772 1781
1773 - if (save_single_algor_pic) {  
1774 - auto json_str = helpers::gen_json::gen_manned_json(obj_key.video_id, obj_key.obj_id, result->box, algorithm_type_t::NONMOTOR_VEHICLE_REFIT);  
1775 - save_snapshot_process(obj_key, algorithm_type_t::NONMOTOR_VEHICLE_REFIT, src_img, roi_img, 0, json_str); 1782 + // if (save_single_algor_pic) {
  1783 + if (0) {
  1784 + ai_engine_module::Alarm_Snapshot alarm_snapshot; alarm_snapshot.algor_type = (int)algorithm_type_t::NONMOTOR_VEHICLE_REFIT;
  1785 + alarm_snapshot.snapShot = src_img; alarm_snapshot.snapShotLittle = roi_img; alarm_snapshot.box = result->box;
  1786 + alarm_snapshots.push_back(alarm_snapshot);
1776 } else { 1787 } else {
1777 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img); 1788 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img);
1778 } 1789 }
@@ -1796,8 +1807,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1796,8 +1807,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1796 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id; 1807 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id;
1797 1808
1798 if (save_single_algor_pic) { 1809 if (save_single_algor_pic) {
1799 - auto json_str = helpers::gen_json::gen_manned_json(obj_key.video_id, obj_key.obj_id, result->box, trafficlight_algor.at(idx));  
1800 - save_snapshot_process(obj_key, trafficlight_algor.at(idx), src_img, roi_img, 0, json_str); 1810 + // auto json_str = helpers::gen_json::gen_manned_json(obj_key.video_id, obj_key.obj_id, result->box, trafficlight_algor.at(idx));
  1811 + // save_snapshot_process(obj_key, trafficlight_algor.at(idx), src_img, roi_img, 0, json_str);
  1812 + ai_engine_module::Alarm_Snapshot alarm_snapshot; alarm_snapshot.algor_type = (int)trafficlight_algor.at(idx);
  1813 + alarm_snapshot.snapShot = src_img; alarm_snapshot.snapShotLittle = roi_img; alarm_snapshot.box = result->box;
  1814 + alarm_snapshots.push_back(alarm_snapshot);
1801 } else { 1815 } else {
1802 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img); 1816 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img);
1803 } 1817 }
@@ -1822,9 +1836,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1822,9 +1836,11 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1822 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id; 1836 vpc_img_info src_img; src_img.pic_desc = result->origin_img_desc; src_img.task_id = obj_key.video_id;
1823 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id; 1837 vpc_img_info roi_img; roi_img.pic_desc = result->roi_img_desc; roi_img.task_id = obj_key.video_id; roi_img.object_id = obj_key.obj_id;
1824 1838
1825 - if (save_single_algor_pic) {  
1826 - auto json_str = helpers::gen_json::gen_manned_json(obj_key.video_id, obj_key.obj_id, result->box, roadseg_algor.at(idx));  
1827 - save_snapshot_process(obj_key, roadseg_algor.at(idx), src_img, roi_img, 0, json_str); 1839 + if (save_single_algor_pic && (roadseg_algor.at(idx) == algorithm_type_t::PERSON_CROSS || roadseg_algor.at(idx) == algorithm_type_t::NONMOTOR_CEOSSPARKLINE ||
  1840 + roadseg_algor.at(idx) == algorithm_type_t::VEHICLE_NOTGIVEWAY || roadseg_algor.at(idx) == algorithm_type_t::VEHICLE_SOLIDLINETURNAROUND)) {
  1841 + ai_engine_module::Alarm_Snapshot alarm_snapshot; alarm_snapshot.algor_type = (int)roadseg_algor.at(idx);
  1842 + alarm_snapshot.snapShot = src_img; alarm_snapshot.snapShotLittle = roi_img; alarm_snapshot.box = result->box;
  1843 + alarm_snapshots.push_back(alarm_snapshot);
1828 } else { 1844 } else {
1829 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img); 1845 VPCUtil::vpc_img_release(src_img); VPCUtil::vpc_img_release(roi_img);
1830 } 1846 }
@@ -1842,13 +1858,21 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1842,13 +1858,21 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1842 1858
1843 1859
1844 map<OBJ_KEY, OBJ_VALUES> _total_snapshot_info = m_snapshot_reprocessing->get_total_village_snapshot_info(); 1860 map<OBJ_KEY, OBJ_VALUES> _total_snapshot_info = m_snapshot_reprocessing->get_total_village_snapshot_info();
1845 - if(_total_snapshot_info.size() <= 0){ 1861 + if(_total_snapshot_info.size() <= 0) {
  1862 + for (int sp_idx = 0; sp_idx < alarm_snapshots.size(); sp_idx ++) {
  1863 + VPCUtil::vpc_img_release(alarm_snapshots[sp_idx].snapShot);
  1864 + VPCUtil::vpc_img_release(alarm_snapshots[sp_idx].snapShotLittle);
  1865 + }
1846 continue; 1866 continue;
1847 } 1867 }
1848 1868
1849 LOG_DEBUG("_total_snapshot_info size: {}", _total_snapshot_info.size()); 1869 LOG_DEBUG("_total_snapshot_info size: {}", _total_snapshot_info.size());
1850 auto it = _total_snapshot_info.find(obj_key); 1870 auto it = _total_snapshot_info.find(obj_key);
1851 if (it == _total_snapshot_info.end()) { 1871 if (it == _total_snapshot_info.end()) {
  1872 + for (int sp_idx = 0; sp_idx < alarm_snapshots.size(); sp_idx ++) {
  1873 + VPCUtil::vpc_img_release(alarm_snapshots[sp_idx].snapShot);
  1874 + VPCUtil::vpc_img_release(alarm_snapshots[sp_idx].snapShotLittle);
  1875 + }
1852 continue; 1876 continue;
1853 } 1877 }
1854 1878
@@ -1883,6 +1907,7 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1883,6 +1907,7 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1883 1907
1884 string json_str = ""; 1908 string json_str = "";
1885 std::vector<video_object_snapshot> algo_results; 1909 std::vector<video_object_snapshot> algo_results;
  1910 + // 存轨迹抓拍图
1886 for (int sp_idx = 0; sp_idx < 3; sp_idx ++) { 1911 for (int sp_idx = 0; sp_idx < 3; sp_idx ++) {
1887 int num = sp_idx + 1; 1912 int num = sp_idx + 1;
1888 // 原图 1913 // 原图
@@ -1899,12 +1924,15 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1899,12 +1924,15 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1899 1924
1900 LOG_DEBUG("抠图"); 1925 LOG_DEBUG("抠图");
1901 // 抠图 1926 // 抠图
1902 - string object_file_name = result_folder_little + helpers::os::sep + obj_key.video_id + "_" +  
1903 - std::to_string(obj_key.obj_id) + "_" + cur_timestamp_ms + "_picnum_" + std::to_string(num) + ".jpg";  
1904 - ImgSaveInfo obj_save_info;  
1905 - obj_save_info.file_path = object_file_name;  
1906 - obj_save_info.img_info = obj_value.snapShots[sp_idx].snapShotLittle;  
1907 - m_save_snapshot_reprocessing->reprocessing_process_wo_locus_async(obj_save_info); 1927 + string object_file_name = "";
  1928 + if (num == 2) { //暂不存最佳抓拍之外的小图,注意和update_village_bestsnapshot对应
  1929 + object_file_name = result_folder_little + helpers::os::sep + obj_key.video_id + "_" +
  1930 + std::to_string(obj_key.obj_id) + "_" + cur_timestamp_ms + "_picnum_" + std::to_string(num) + ".jpg";
  1931 + ImgSaveInfo obj_save_info;
  1932 + obj_save_info.file_path = object_file_name;
  1933 + obj_save_info.img_info = obj_value.snapShots[sp_idx].snapShotLittle;
  1934 + m_save_snapshot_reprocessing->reprocessing_process_wo_locus_async(obj_save_info);
  1935 + }
1908 1936
1909 #ifdef POST_USE_RABBITMQ 1937 #ifdef POST_USE_RABBITMQ
1910 video_object_snapshot new_obj_ss_info; 1938 video_object_snapshot new_obj_ss_info;
@@ -1920,6 +1948,44 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id, @@ -1920,6 +1948,44 @@ void CMultiSourceProcess::village_snapshot(vector&lt;string&gt;&amp; vpt_interest_task_id,
1920 #endif 1948 #endif
1921 } 1949 }
1922 1950
  1951 + // 存报警抓拍图
  1952 + for (int sp_idx = 0; sp_idx < alarm_snapshots.size(); sp_idx ++) {
  1953 + int num = sp_idx + 4;
  1954 + // 原图
  1955 + std::string fpath_origin = result_folder + helpers::os::sep + obj_key.video_id + "_" + std::to_string(obj_key.obj_id) + "_" +
  1956 + cur_timestamp_ms + "_picnum_" + std::to_string(num) + "_" + std::to_string(alarm_snapshots[sp_idx].algor_type) + ".jpg";
  1957 +
  1958 + ImgSaveInfo origin_save_info;
  1959 + origin_save_info.file_path = fpath_origin;
  1960 + origin_save_info.img_info = alarm_snapshots[sp_idx].snapShot;
  1961 + m_save_snapshot_reprocessing->reprocessing_process_wo_locus_async(origin_save_info);
  1962 +
  1963 +#if 1 /*不保存抠图*/
  1964 + string object_file_name = "";
  1965 +#else
  1966 + // 抠图
  1967 + string object_file_name = result_folder_little + helpers::os::sep + obj_key.video_id + "_" + std::to_string(obj_key.obj_id) + "_" +
  1968 + cur_timestamp_ms + "_picnum_" + std::to_string(num) + "_" + std::to_string(alarm_snapshots[sp_idx].algor_type) + ".jpg";
  1969 + ImgSaveInfo obj_save_info;
  1970 + obj_save_info.file_path = object_file_name;
  1971 + obj_save_info.img_info = alarm_snapshots[sp_idx].snapShotLittle;
  1972 + m_save_snapshot_reprocessing->reprocessing_process_wo_locus_async(obj_save_info);
  1973 +#endif
  1974 +
  1975 +#ifdef POST_USE_RABBITMQ
  1976 + video_object_snapshot new_obj_ss_info;
  1977 + new_obj_ss_info.analysisRes = nullptr;
  1978 + new_obj_ss_info.object_id = obj_key.obj_id;
  1979 + new_obj_ss_info.obj_info.set_data(alarm_snapshots[sp_idx].box.cls, alarm_snapshots[sp_idx].box.score, alarm_snapshots[sp_idx].box.left,
  1980 + alarm_snapshots[sp_idx].box.top, alarm_snapshots[sp_idx].box.right, alarm_snapshots[sp_idx].box.bottom);
  1981 + strcpy(new_obj_ss_info.task_id, obj_key.video_id.c_str());
  1982 + strcpy(new_obj_ss_info.video_image_path, fpath_origin.c_str());
  1983 + strcpy(new_obj_ss_info.snapshot_image_path, object_file_name.c_str());
  1984 + algo_results.push_back(new_obj_ss_info);
  1985 +#endif
  1986 + }
  1987 + std::vector<ai_engine_module::Alarm_Snapshot>().swap(alarm_snapshots);
  1988 +
1923 #ifdef POST_USE_RABBITMQ 1989 #ifdef POST_USE_RABBITMQ
1924 json_str = helpers::gen_json::gen_village_json(task_id, obj_key.obj_id, algorithm_types, algo_results, video_file_name); 1990 json_str = helpers::gen_json::gen_village_json(task_id, obj_key.obj_id, algorithm_types, algo_results, video_file_name);
1925 #endif 1991 #endif
src/demo/demo.cpp
@@ -12,23 +12,23 @@ using namespace std; @@ -12,23 +12,23 @@ using namespace std;
12 void init_mq_conn(void *handle) { 12 void init_mq_conn(void *handle) {
13 for (auto key : {mq_type_t::ALARM_MQ, mq_type_t::GET_TASK_MQ, mq_type_t::HEART_BEAT_MQ, mq_type_t::SCREENSHORT_TASK_MQ, mq_type_t::TIMING_SCREENSHORT_TASK_MQ}) { 13 for (auto key : {mq_type_t::ALARM_MQ, mq_type_t::GET_TASK_MQ, mq_type_t::HEART_BEAT_MQ, mq_type_t::SCREENSHORT_TASK_MQ, mq_type_t::TIMING_SCREENSHORT_TASK_MQ}) {
14 rabbitmq_conn_params_t mq_conn_params; 14 rabbitmq_conn_params_t mq_conn_params;
15 - mq_conn_params.port = 5672;  
16 15
17 - strcpy(mq_conn_params.ip, "192.168.60.126");  
18 - strcpy(mq_conn_params.uname, "admin");  
19 - strcpy(mq_conn_params.passwd, "123456");  
20 - strcpy(mq_conn_params.vhost, "/");  
21 - strcpy(mq_conn_params.exchange, "topExchange");  
22 - strcpy(mq_conn_params.exchange_type, "topic");  
23 -  
24 - // mq_conn_params.port = 5673;  
25 - // strcpy(mq_conn_params.ip, "192.168.10.187"); 16 + // mq_conn_params.port = 5672;
  17 + // strcpy(mq_conn_params.ip, "192.168.60.126");
26 // strcpy(mq_conn_params.uname, "admin"); 18 // strcpy(mq_conn_params.uname, "admin");
27 - // strcpy(mq_conn_params.passwd, "admin123456"); 19 + // strcpy(mq_conn_params.passwd, "123456");
28 // strcpy(mq_conn_params.vhost, "/"); 20 // strcpy(mq_conn_params.vhost, "/");
29 // strcpy(mq_conn_params.exchange, "topExchange"); 21 // strcpy(mq_conn_params.exchange, "topExchange");
30 // strcpy(mq_conn_params.exchange_type, "topic"); 22 // strcpy(mq_conn_params.exchange_type, "topic");
31 23
  24 + mq_conn_params.port = 5673;
  25 + strcpy(mq_conn_params.ip, "192.168.10.187");
  26 + strcpy(mq_conn_params.uname, "admin");
  27 + strcpy(mq_conn_params.passwd, "admin123456");
  28 + strcpy(mq_conn_params.vhost, "/");
  29 + strcpy(mq_conn_params.exchange, "topExchange");
  30 + strcpy(mq_conn_params.exchange_type, "topic");
  31 +
32 switch (key) { 32 switch (key) {
33 case mq_type_t::ALARM_MQ: { 33 case mq_type_t::ALARM_MQ: {
34 strcpy(mq_conn_params.queue, "topic.queue.alarm"); 34 strcpy(mq_conn_params.queue, "topic.queue.alarm");
@@ -1121,7 +1121,7 @@ void test_gpu(int gpuID){ @@ -1121,7 +1121,7 @@ void test_gpu(int gpuID){
1121 std::vector<algorithm_type_t> algor_vec3 = {algorithm_type_t::PERSON_CROSS, algorithm_type_t::NONMOTOR_WRONGDIRECTION, algorithm_type_t::VEHICLE_WRONGDIRECTION, algorithm_type_t::VEHICLE_NOTGIVEWAY, 1121 std::vector<algorithm_type_t> algor_vec3 = {algorithm_type_t::PERSON_CROSS, algorithm_type_t::NONMOTOR_WRONGDIRECTION, algorithm_type_t::VEHICLE_WRONGDIRECTION, algorithm_type_t::VEHICLE_NOTGIVEWAY,
1122 algorithm_type_t::VEHICLE_SOLIDLINETURNAROUND}; 1122 algorithm_type_t::VEHICLE_SOLIDLINETURNAROUND};
1123 1123
1124 - 1124 +/*
1125 int repeat_num = 1000; 1125 int repeat_num = 1000;
1126 createTask(handle, algor_vec2, 0, false); 1126 createTask(handle, algor_vec2, 0, false);
1127 createTask(handle, algor_vec2, 2, false); 1127 createTask(handle, algor_vec2, 2, false);
@@ -1141,9 +1141,9 @@ void test_gpu(int gpuID){ @@ -1141,9 +1141,9 @@ void test_gpu(int gpuID){
1141 sleep(5); 1141 sleep(5);
1142 } 1142 }
1143 1143
1144 - } 1144 + }*/
1145 1145
1146 - /* 1146 +
1147 char ch = 'a'; 1147 char ch = 'a';
1148 while (ch != 'q') { 1148 while (ch != 'q') {
1149 ch = getchar(); 1149 ch = getchar();
@@ -1153,10 +1153,10 @@ void test_gpu(int gpuID){ @@ -1153,10 +1153,10 @@ void test_gpu(int gpuID){
1153 createTask(handle, algor_vec2, 4, false); 1153 createTask(handle, algor_vec2, 4, false);
1154 createTask(handle, algor_vec2, 5, false); 1154 createTask(handle, algor_vec2, 5, false);
1155 createTask(handle, algor_vec2, 6, false); 1155 createTask(handle, algor_vec2, 6, false);
1156 - createTask(handle, algor_vec2, 7, false); 1156 + // createTask(handle, algor_vec2, 7, false);
1157 createTask(handle, algor_vec2, 8, false); 1157 createTask(handle, algor_vec2, 8, false);
1158 createTask(handle, algor_vec2, 9, false); 1158 createTask(handle, algor_vec2, 9, false);
1159 - createTask(handle, algor_vec2, 10, false); 1159 + // createTask(handle, algor_vec2, 10, false);
1160 // createTask(handle, algor_vec2, 11, false); 1160 // createTask(handle, algor_vec2, 11, false);
1161 // createTask(handle, algor_vec2, 12, false); 1161 // createTask(handle, algor_vec2, 12, false);
1162 // createTask(handle, algor_vec2, 13, false); 1162 // createTask(handle, algor_vec2, 13, false);
@@ -1173,7 +1173,7 @@ void test_gpu(int gpuID){ @@ -1173,7 +1173,7 @@ void test_gpu(int gpuID){
1173 break; 1173 break;
1174 } 1174 }
1175 1175
1176 - }*/ 1176 + }
1177 1177
1178 // finish_task(handle, (char*)task_id.data(), 0); 1178 // finish_task(handle, (char*)task_id.data(), 0);
1179 1179
src/reprocessing_module/snapshot_reprocessing.cpp
@@ -435,20 +435,25 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve @@ -435,20 +435,25 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve
435 vec_obj_info.push_back(info);//用于最佳抓拍图 435 vec_obj_info.push_back(info);//用于最佳抓拍图
436 436
437 // 首张抓拍图:切图+信息存储 437 // 首张抓拍图:切图+信息存储
438 - vpc_img_info crop_img = pVpcUtil->crop(memPtr, info);  
439 total_village_snapshot_info[new_obj].exists[0] = true; 438 total_village_snapshot_info[new_obj].exists[0] = true;
440 total_village_snapshot_info[new_obj].snapShots[0].index.index = cur_real_index; 439 total_village_snapshot_info[new_obj].snapShots[0].index.index = cur_real_index;
441 total_village_snapshot_info[new_obj].snapShots[0].confidence = obj_info.confidence; 440 total_village_snapshot_info[new_obj].snapShots[0].confidence = obj_info.confidence;
442 total_village_snapshot_info[new_obj].snapShots[0].obj_pos = { cur_left, cur_top, cur_right - cur_left, cur_bottom - cur_top }; 441 total_village_snapshot_info[new_obj].snapShots[0].obj_pos = { cur_left, cur_top, cur_right - cur_left, cur_bottom - cur_top };
443 total_village_snapshot_info[new_obj].snapShots[0].snapShot = VPCUtil::vpc_devMem2vpcImg(memPtr); 442 total_village_snapshot_info[new_obj].snapShots[0].snapShot = VPCUtil::vpc_devMem2vpcImg(memPtr);
  443 +#if 0 /*暂不存最佳抓拍之外的小图*/
  444 + vpc_img_info crop_img = pVpcUtil->crop(memPtr, info);
444 total_village_snapshot_info[new_obj].snapShots[0].snapShotLittle = crop_img; 445 total_village_snapshot_info[new_obj].snapShots[0].snapShotLittle = crop_img;
445 - 446 +#endif
446 // 缓存末张抓拍图 447 // 缓存末张抓拍图
447 total_village_snapshot_info[new_obj].exists[2] = true; 448 total_village_snapshot_info[new_obj].exists[2] = true;
448 total_village_snapshot_info[new_obj].snapShots[2].index.index = cur_real_index; 449 total_village_snapshot_info[new_obj].snapShots[2].index.index = cur_real_index;
449 total_village_snapshot_info[new_obj].snapShots[2].confidence = obj_info.confidence; 450 total_village_snapshot_info[new_obj].snapShots[2].confidence = obj_info.confidence;
450 total_village_snapshot_info[new_obj].snapShots[2].obj_pos = { cur_left, cur_top, cur_right - cur_left, cur_bottom - cur_top }; 451 total_village_snapshot_info[new_obj].snapShots[2].obj_pos = { cur_left, cur_top, cur_right - cur_left, cur_bottom - cur_top };
  452 +#if 0 /*暂不存最佳抓拍之外的小图*/
451 last_vec_obj_info.push_back(info); 453 last_vec_obj_info.push_back(info);
  454 +#else
  455 + total_village_snapshot_info[new_obj].snapShots[2].snapShot = VPCUtil::vpc_devMem2vpcImg(memPtr);
  456 +#endif
452 457
453 } else { 458 } else {
454 total_village_snapshot_info[new_obj].snapShots[1].last_area = (obj_info.right - obj_info.left) * (obj_info.bottom - obj_info.top); 459 total_village_snapshot_info[new_obj].snapShots[1].last_area = (obj_info.right - obj_info.left) * (obj_info.bottom - obj_info.top);
@@ -490,7 +495,12 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve @@ -490,7 +495,12 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve
490 total_village_snapshot_info[new_obj].snapShots[2].index.index = cur_real_index; 495 total_village_snapshot_info[new_obj].snapShots[2].index.index = cur_real_index;
491 total_village_snapshot_info[new_obj].snapShots[2].confidence = obj_info.confidence; 496 total_village_snapshot_info[new_obj].snapShots[2].confidence = obj_info.confidence;
492 total_village_snapshot_info[new_obj].snapShots[2].obj_pos = { cur_left, cur_top, cur_right - cur_left, cur_bottom - cur_top }; 497 total_village_snapshot_info[new_obj].snapShots[2].obj_pos = { cur_left, cur_top, cur_right - cur_left, cur_bottom - cur_top };
  498 +#if 0 /*暂不存最佳抓拍之外的小图*/
493 last_vec_obj_info.push_back(info); 499 last_vec_obj_info.push_back(info);
  500 +#else
  501 + VPCUtil::vpc_img_release(total_village_snapshot_info[new_obj].snapShots[2].snapShot);
  502 + total_village_snapshot_info[new_obj].snapShots[2].snapShot = VPCUtil::vpc_devMem2vpcImg(memPtr);
  503 +#endif
494 //--------------------------------------------------------------- 504 //---------------------------------------------------------------
495 if (!best_snapshot_judge_algor(new_obj, total_village_snapshot_info[new_obj].snapShots[1], obj_info.left, obj_info.top, 505 if (!best_snapshot_judge_algor(new_obj, total_village_snapshot_info[new_obj].snapShots[1], obj_info.left, obj_info.top,
496 cur_real_width, cur_real_height, frame_width, frame_height)) 506 cur_real_width, cur_real_height, frame_width, frame_height))
@@ -530,7 +540,7 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve @@ -530,7 +540,7 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve
530 total_village_snapshot_info[objKey].snapShots[1].snapShotLittle = obj_info; 540 total_village_snapshot_info[objKey].snapShots[1].snapShotLittle = obj_info;
531 } 541 }
532 imgList.clear(); 542 imgList.clear();
533 - 543 +#if 0 /*暂不存最佳抓拍之外的小图*/
534 vector<vpc_img_info> last_imgList = pVpcUtil->crop_batch(memPtr, last_vec_obj_info); 544 vector<vpc_img_info> last_imgList = pVpcUtil->crop_batch(memPtr, last_vec_obj_info);
535 last_vec_obj_info.clear(); 545 last_vec_obj_info.clear();
536 for (size_t i = 0; i < last_imgList.size(); i++) { 546 for (size_t i = 0; i < last_imgList.size(); i++) {
@@ -542,6 +552,7 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve @@ -542,6 +552,7 @@ void snapshot_reprocessing::update_village_bestsnapshot(vector&lt;DeviceMemory*&gt; ve
542 total_village_snapshot_info[objKey].snapShots[2].snapShotLittle = obj_info; 552 total_village_snapshot_info[objKey].snapShots[2].snapShotLittle = obj_info;
543 } 553 }
544 last_imgList.clear(); 554 last_imgList.clear();
  555 +#endif
545 } 556 }
546 } 557 }
547 558