diff --git a/src/ai_engine_module/pedestrian_vehicle_retrograde.cpp b/src/ai_engine_module/pedestrian_vehicle_retrograde.cpp index 3090e43..de312e1 100644 --- a/src/ai_engine_module/pedestrian_vehicle_retrograde.cpp +++ b/src/ai_engine_module/pedestrian_vehicle_retrograde.cpp @@ -15,6 +15,7 @@ #include "../decoder/interface/DeviceMemory.hpp" #include "../common/logger.hpp" #include "../ai_platform/mvpt_process_assist.h" +#include "../helpers/img_util.h" namespace ai_engine_module { namespace pedestrian_vehicle_retrograde { @@ -50,11 +51,19 @@ bool is_valid_box(const int &cls, const algorithm_type_t &algor_type) { bool is_valid_box(const box_t &box, const algorithm_type_t &algor_type, const task_param_manager::algo_param_type_t_ *params_ptr = nullptr) { - if (!params_ptr) - return false; + if (!params_ptr || params_ptr->basic_param == nullptr) + return false; - if (!snapshot_legal_inarea(params_ptr->basic_param->algor_valid_rect, box.left, box.top, box.right, box.bottom)) - return false; + universal_algor_adapt_param *adapt_param = params_ptr->basic_param->adapt_param; + if (nullptr == adapt_param) { + return false; + } + + sy_point center; + center.x_ = (box.right + box.left)/ 2 ; + center.y_ = (box.bottom + box.top) / 2; + if (!common::isInPolygon(adapt_param->points, adapt_param->points_count, center)) + return false; if (params_ptr->algor_param == nullptr) return false; diff --git a/src/ai_engine_module/pedestrian_vehicle_trespass.cpp b/src/ai_engine_module/pedestrian_vehicle_trespass.cpp index 2847a11..7bd1876 100644 --- a/src/ai_engine_module/pedestrian_vehicle_trespass.cpp +++ b/src/ai_engine_module/pedestrian_vehicle_trespass.cpp @@ -17,7 +17,7 @@ #include "../decoder/interface/DeviceMemory.hpp" #include "../common/logger.hpp" #include "../ai_platform/mvpt_process_assist.h" - +#include "../helpers/img_util.h" namespace ai_engine_module { namespace pedestrian_vehicle_trespass { @@ -55,11 +55,19 @@ bool is_valid_box(const int &cls, const algorithm_type_t &algor_type) { bool is_valid_box(const box_t &box, const algorithm_type_t &algor_type, const task_param_manager::algo_param_type_t_ *params_ptr = nullptr) { - if (!params_ptr) - return false; + if (!params_ptr || params_ptr->basic_param == nullptr) + return false; - if (!snapshot_legal_inarea(params_ptr->basic_param->algor_valid_rect, box.left, box.top, box.right, box.bottom)) - return false; + universal_algor_adapt_param *adapt_param = params_ptr->basic_param->adapt_param; + if (nullptr == adapt_param) { + return false; + } + + sy_point center; + center.x_ = (box.right + box.left)/ 2 ; + center.y_ = (box.bottom + box.top) / 2; + if (!common::isInPolygon(adapt_param->points, adapt_param->points_count, center)) + return false; if (params_ptr->algor_param == nullptr) return false;