diff --git a/energy/include/energy/energy.h b/energy/include/energy/energy.h index b951735..d3c9557 100644 --- a/energy/include/energy/energy.h +++ b/energy/include/energy/energy.h @@ -36,8 +36,9 @@ public: private: - EnergyPartParam energy_part_param_;//能量机关的参数设置 - + EnergyPartParam energy_part_param_;//能量机关的参数设置 + EnergyPartParam gimble_energy_part_param_;//云台摄像头能量机关的参数设置 + EnergyPartParam chassis_energy_part_param_;//底盘摄像头能量机关的参数设置 bool isMark;//若操作手正在手动标定,则为true bool isGimble;//同时具有底盘和云台摄像头时,处于云台摄像头对心过程 bool isChassis;//同时具有底盘和云台摄像头时,处于底盘摄像头击打过程 diff --git a/energy/src/energy/energy_init.cpp b/energy/src/energy/energy_init.cpp index 29c616a..2d322aa 100644 --- a/energy/src/energy/energy_init.cpp +++ b/energy/src/energy/energy_init.cpp @@ -66,87 +66,130 @@ void Energy::initEnergy() { // 此函数对能量机关参数进行初始化 // --------------------------------------------------------------------------------------------------------------------- void Energy::initEnergyPartParam() { - energy_part_param_.GRAY_THRESH = 225; - energy_part_param_.SPLIT_GRAY_THRESH = 60; - energy_part_param_.FAN_GRAY_THRESH = 75; - energy_part_param_.ARMOR_GRAY_THRESH = 80; + gimble_energy_part_param_.GRAY_THRESH = 225; + gimble_energy_part_param_.SPLIT_GRAY_THRESH = 60; + gimble_energy_part_param_.FAN_GRAY_THRESH = 75; + gimble_energy_part_param_.ARMOR_GRAY_THRESH = 80; - /*energy_part_param_.FAN_CONTOUR_AREA_MAX = 17000; - energy_part_param_.FAN_CONTOUR_AREA_MIN = 0; - energy_part_param_.FAN_CONTOUR_LENGTH_MIN = 70; - energy_part_param_.FAN_CONTOUR_LENGTH_MAX = 100; - energy_part_param_.FAN_CONTOUR_WIDTH_MIN = 30; - energy_part_param_.FAN_CONTOUR_WIDTH_MAX = 60; - energy_part_param_.FAN_CONTOUR_HW_RATIO_MAX = 4; - energy_part_param_.FAN_CONTOUR_HW_RATIO_MIN = 1; + gimble_energy_part_param_.FAN_CONTOUR_AREA_MAX = 17000; + gimble_energy_part_param_.FAN_CONTOUR_AREA_MIN = 0; + gimble_energy_part_param_.FAN_CONTOUR_LENGTH_MIN = 70; + gimble_energy_part_param_.FAN_CONTOUR_LENGTH_MAX = 100; + gimble_energy_part_param_.FAN_CONTOUR_WIDTH_MIN = 30; + gimble_energy_part_param_.FAN_CONTOUR_WIDTH_MAX = 60; + gimble_energy_part_param_.FAN_CONTOUR_HW_RATIO_MAX = 4; + gimble_energy_part_param_.FAN_CONTOUR_HW_RATIO_MIN = 1; - energy_part_param_.ARMOR_CONTOUR_AREA_MAX = 100000; - energy_part_param_.ARMOR_CONTOUR_AREA_MIN = 0; - energy_part_param_.ARMOR_CONTOUR_LENGTH_MIN = 13; - energy_part_param_.ARMOR_CONTOUR_WIDTH_MIN = 5; - energy_part_param_.ARMOR_CONTOUR_LENGTH_MAX = 30; - energy_part_param_.ARMOR_CONTOUR_WIDTH_MAX = 20; - energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MAX = 3; - energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MIN = 1;*/ + gimble_energy_part_param_.ARMOR_CONTOUR_AREA_MAX = 100000; + gimble_energy_part_param_.ARMOR_CONTOUR_AREA_MIN = 0; + gimble_energy_part_param_.ARMOR_CONTOUR_LENGTH_MIN = 13; + gimble_energy_part_param_.ARMOR_CONTOUR_WIDTH_MIN = 5; + gimble_energy_part_param_.ARMOR_CONTOUR_LENGTH_MAX = 30; + gimble_energy_part_param_.ARMOR_CONTOUR_WIDTH_MAX = 20; + gimble_energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MAX = 3; + gimble_energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MIN = 1; - energy_part_param_.FAN_CONTOUR_AREA_MAX = 17000; - energy_part_param_.FAN_CONTOUR_AREA_MIN = 0; - energy_part_param_.FAN_CONTOUR_LENGTH_MIN = 90; - energy_part_param_.FAN_CONTOUR_WIDTH_MIN = 35; - energy_part_param_.FAN_CONTOUR_LENGTH_MAX = 140; - energy_part_param_.FAN_CONTOUR_WIDTH_MAX = 60; - energy_part_param_.FAN_CONTOUR_HW_RATIO_MAX = 4; - energy_part_param_.FAN_CONTOUR_HW_RATIO_MIN = 1; - energy_part_param_.FAN_CONTOUR_AREA_RATIO_MIN = 0.6; + gimble_energy_part_param_.CENTER_R_CONTOUR_AREA_MAX = 100000; + gimble_energy_part_param_.CENTER_R_CONTOUR_AREA_MIN = 0; + gimble_energy_part_param_.CENTER_R_CONTOUR_LENGTH_MIN = 10; + gimble_energy_part_param_.CENTER_R_CONTOUR_WIDTH_MIN = 10; + gimble_energy_part_param_.CENTER_R_CONTOUR_LENGTH_MAX = 30; + gimble_energy_part_param_.CENTER_R_CONTOUR_WIDTH_MAX = 30; + gimble_energy_part_param_.CENTER_R_CONTOUR_HW_RATIO_MAX = 3; + gimble_energy_part_param_.CENTER_R_CONTOUR_HW_RATIO_MIN = 1; + gimble_energy_part_param_.CENTER_R_CONTOUR_AREA_RATIO_MIN = 0.7; + gimble_energy_part_param_.CENTER_R_CONTOUR_INTERSETION_AREA_MIN = 10; - energy_part_param_.ARMOR_CONTOUR_AREA_MAX = 100000; - energy_part_param_.ARMOR_CONTOUR_AREA_MIN = 0; - energy_part_param_.ARMOR_CONTOUR_LENGTH_MIN = 30; - energy_part_param_.ARMOR_CONTOUR_WIDTH_MIN = 15; - energy_part_param_.ARMOR_CONTOUR_LENGTH_MAX = 50; - energy_part_param_.ARMOR_CONTOUR_WIDTH_MAX = 45; - energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MAX = 3; - energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MIN = 1; - energy_part_param_.ARMOR_CONTOUR_AREA_RATIO_MIN = 0.7; + gimble_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_MAX = 17000; + gimble_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_MIN = 0; + gimble_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_LENGTH_MIN = 90; + gimble_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_WIDTH_MIN = 35; + gimble_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_LENGTH_MAX = 140; + gimble_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_WIDTH_MAX = 60; + gimble_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_HW_RATIO_MAX = 3; + gimble_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_HW_RATIO_MIN = 1; + gimble_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_RATIO_MAX = 0.55; + gimble_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_RATIO_MIN = 0.25; - energy_part_param_.CENTER_R_CONTOUR_AREA_MAX = 100000; - energy_part_param_.CENTER_R_CONTOUR_AREA_MIN = 0; - energy_part_param_.CENTER_R_CONTOUR_LENGTH_MIN = 10; - energy_part_param_.CENTER_R_CONTOUR_WIDTH_MIN = 10; - energy_part_param_.CENTER_R_CONTOUR_LENGTH_MAX = 30; - energy_part_param_.CENTER_R_CONTOUR_WIDTH_MAX = 30; - energy_part_param_.CENTER_R_CONTOUR_HW_RATIO_MAX = 3; - energy_part_param_.CENTER_R_CONTOUR_HW_RATIO_MIN = 1; - energy_part_param_.CENTER_R_CONTOUR_AREA_RATIO_MIN = 0.7; - energy_part_param_.CENTER_R_CONTOUR_INTERSETION_AREA_MIN = 10; + gimble_energy_part_param_.FLOW_STRIP_CONTOUR_AREA_MAX = 100000; + gimble_energy_part_param_.FLOW_STRIP_CONTOUR_AREA_MIN = 0; + gimble_energy_part_param_.FLOW_STRIP_CONTOUR_LENGTH_MIN = 50; + gimble_energy_part_param_.FLOW_STRIP_CONTOUR_WIDTH_MIN = 3; + gimble_energy_part_param_.FLOW_STRIP_CONTOUR_LENGTH_MAX = 90; + gimble_energy_part_param_.FLOW_STRIP_CONTOUR_WIDTH_MAX = 20; + gimble_energy_part_param_.FLOW_STRIP_CONTOUR_HW_RATIO_MAX = 12; + gimble_energy_part_param_.FLOW_STRIP_CONTOUR_HW_RATIO_MIN = 4; + gimble_energy_part_param_.FLOW_STRIP_CONTOUR_AREA_RATIO_MIN = 0.5; + gimble_energy_part_param_.FLOW_STRIP_CONTOUR_INTERSETION_AREA_MIN = 300; - energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_MAX = 17000; - energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_MIN = 0; - energy_part_param_.FLOW_STRIP_FAN_CONTOUR_LENGTH_MIN = 90; - energy_part_param_.FLOW_STRIP_FAN_CONTOUR_WIDTH_MIN = 35; - energy_part_param_.FLOW_STRIP_FAN_CONTOUR_LENGTH_MAX = 140; - energy_part_param_.FLOW_STRIP_FAN_CONTOUR_WIDTH_MAX = 60; - energy_part_param_.FLOW_STRIP_FAN_CONTOUR_HW_RATIO_MAX = 3; - energy_part_param_.FLOW_STRIP_FAN_CONTOUR_HW_RATIO_MIN = 1; - energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_RATIO_MAX = 0.55; - energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_RATIO_MIN = 0.25; - energy_part_param_.FLOW_STRIP_CONTOUR_AREA_MAX = 100000; - energy_part_param_.FLOW_STRIP_CONTOUR_AREA_MIN = 0; - energy_part_param_.FLOW_STRIP_CONTOUR_LENGTH_MIN = 50; - energy_part_param_.FLOW_STRIP_CONTOUR_WIDTH_MIN = 3; - energy_part_param_.FLOW_STRIP_CONTOUR_LENGTH_MAX = 90; - energy_part_param_.FLOW_STRIP_CONTOUR_WIDTH_MAX = 20; - energy_part_param_.FLOW_STRIP_CONTOUR_HW_RATIO_MAX = 12; - energy_part_param_.FLOW_STRIP_CONTOUR_HW_RATIO_MIN = 4; - energy_part_param_.FLOW_STRIP_CONTOUR_AREA_RATIO_MIN = 0.5; - energy_part_param_.FLOW_STRIP_CONTOUR_INTERSETION_AREA_MIN = 300; - energy_part_param_.TWIN_ANGEL_MAX = 10; - energy_part_param_.INTERSETION_CONTOUR_AREA_MIN = 60; + gimble_energy_part_param_.TWIN_ANGEL_MAX = 10; + gimble_energy_part_param_.INTERSETION_CONTOUR_AREA_MIN = 60; - energy_part_param_.TARGET_CHANGE_DISTANCE_MAX = 20; - energy_part_param_.TWIN_POINT_MAX = 20; + chassis_energy_part_param_.GRAY_THRESH = 225; + chassis_energy_part_param_.SPLIT_GRAY_THRESH = 60; + chassis_energy_part_param_.FAN_GRAY_THRESH = 75; + chassis_energy_part_param_.ARMOR_GRAY_THRESH = 80; + + chassis_energy_part_param_.FAN_CONTOUR_AREA_MAX = 17000; + chassis_energy_part_param_.FAN_CONTOUR_AREA_MIN = 0; + chassis_energy_part_param_.FAN_CONTOUR_LENGTH_MIN = 90; + chassis_energy_part_param_.FAN_CONTOUR_WIDTH_MIN = 35; + chassis_energy_part_param_.FAN_CONTOUR_LENGTH_MAX = 140; + chassis_energy_part_param_.FAN_CONTOUR_WIDTH_MAX = 60; + chassis_energy_part_param_.FAN_CONTOUR_HW_RATIO_MAX = 4; + chassis_energy_part_param_.FAN_CONTOUR_HW_RATIO_MIN = 1; + chassis_energy_part_param_.FAN_CONTOUR_AREA_RATIO_MIN = 0.6; + + chassis_energy_part_param_.ARMOR_CONTOUR_AREA_MAX = 100000; + chassis_energy_part_param_.ARMOR_CONTOUR_AREA_MIN = 0; + chassis_energy_part_param_.ARMOR_CONTOUR_LENGTH_MIN = 30; + chassis_energy_part_param_.ARMOR_CONTOUR_WIDTH_MIN = 15; + chassis_energy_part_param_.ARMOR_CONTOUR_LENGTH_MAX = 50; + chassis_energy_part_param_.ARMOR_CONTOUR_WIDTH_MAX = 45; + chassis_energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MAX = 3; + chassis_energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MIN = 1; + chassis_energy_part_param_.ARMOR_CONTOUR_AREA_RATIO_MIN = 0.7; + + chassis_energy_part_param_.CENTER_R_CONTOUR_AREA_MAX = 100000; + chassis_energy_part_param_.CENTER_R_CONTOUR_AREA_MIN = 0; + chassis_energy_part_param_.CENTER_R_CONTOUR_LENGTH_MIN = 10; + chassis_energy_part_param_.CENTER_R_CONTOUR_WIDTH_MIN = 10; + chassis_energy_part_param_.CENTER_R_CONTOUR_LENGTH_MAX = 30; + chassis_energy_part_param_.CENTER_R_CONTOUR_WIDTH_MAX = 30; + chassis_energy_part_param_.CENTER_R_CONTOUR_HW_RATIO_MAX = 3; + chassis_energy_part_param_.CENTER_R_CONTOUR_HW_RATIO_MIN = 1; + chassis_energy_part_param_.CENTER_R_CONTOUR_AREA_RATIO_MIN = 0.7; + chassis_energy_part_param_.CENTER_R_CONTOUR_INTERSETION_AREA_MIN = 10; + + chassis_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_MAX = 17000; + chassis_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_MIN = 0; + chassis_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_LENGTH_MIN = 90; + chassis_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_WIDTH_MIN = 35; + chassis_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_LENGTH_MAX = 140; + chassis_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_WIDTH_MAX = 60; + chassis_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_HW_RATIO_MAX = 3; + chassis_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_HW_RATIO_MIN = 1; + chassis_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_RATIO_MAX = 0.55; + chassis_energy_part_param_.FLOW_STRIP_FAN_CONTOUR_AREA_RATIO_MIN = 0.25; + + chassis_energy_part_param_.FLOW_STRIP_CONTOUR_AREA_MAX = 100000; + chassis_energy_part_param_.FLOW_STRIP_CONTOUR_AREA_MIN = 0; + chassis_energy_part_param_.FLOW_STRIP_CONTOUR_LENGTH_MIN = 50; + chassis_energy_part_param_.FLOW_STRIP_CONTOUR_WIDTH_MIN = 3; + chassis_energy_part_param_.FLOW_STRIP_CONTOUR_LENGTH_MAX = 90; + chassis_energy_part_param_.FLOW_STRIP_CONTOUR_WIDTH_MAX = 20; + chassis_energy_part_param_.FLOW_STRIP_CONTOUR_HW_RATIO_MAX = 12; + chassis_energy_part_param_.FLOW_STRIP_CONTOUR_HW_RATIO_MIN = 4; + chassis_energy_part_param_.FLOW_STRIP_CONTOUR_AREA_RATIO_MIN = 0.5; + chassis_energy_part_param_.FLOW_STRIP_CONTOUR_INTERSETION_AREA_MIN = 300; + + chassis_energy_part_param_.TWIN_ANGEL_MAX = 10; + chassis_energy_part_param_.INTERSETION_CONTOUR_AREA_MIN = 60; + + chassis_energy_part_param_.TARGET_CHANGE_DISTANCE_MAX = 20; + chassis_energy_part_param_.TWIN_POINT_MAX = 20; } diff --git a/energy/src/energy/run.cpp b/energy/src/energy/run.cpp index 34293f6..aff41de 100644 --- a/energy/src/energy/run.cpp +++ b/energy/src/energy/run.cpp @@ -18,6 +18,8 @@ int Energy::runBig(cv::Mat &gimble_src, cv::Mat &chassis_src) { runBig(gimble_src);//仅拥有云台摄像头则调用单摄像头的run函数 else if (isGimble) { imshow("src", gimble_src); + if (gimble_src.type() == CV_8UC3)cvtColor(gimble_src, gimble_src, COLOR_BGR2GRAY); + energy_part_param_ = gimble_energy_part_param_; fans.clear(); armors.clear(); centerRs.clear(); @@ -47,6 +49,8 @@ int Energy::runBig(cv::Mat &gimble_src, cv::Mat &chassis_src) { } } else if (isChassis) { imshow("src", chassis_src); + if (chassis_src.type() == CV_8UC3)cvtColor(chassis_src, chassis_src, COLOR_BGR2GRAY); + energy_part_param_ = chassis_energy_part_param_; fans.clear(); armors.clear(); centerRs.clear(); @@ -102,6 +106,8 @@ int Energy::runBig(cv::Mat &gimble_src, cv::Mat &chassis_src) { // --------------------------------------------------------------------------------------------------------------------- int Energy::runBig(cv::Mat &gimble_src) { imshow("src", gimble_src); + if (gimble_src.type() == CV_8UC3)cvtColor(gimble_src, gimble_src, COLOR_BGR2GRAY); + energy_part_param_ = gimble_energy_part_param_; fans.clear(); armors.clear(); centerRs.clear(); @@ -150,6 +156,7 @@ int Energy::runBig(cv::Mat &gimble_src) { int Energy::runSmall(cv::Mat &gimble_src) { imshow("gimble src", gimble_src); if (gimble_src.type() == CV_8UC3)cvtColor(gimble_src, gimble_src, COLOR_BGR2GRAY); + energy_part_param_ = gimble_energy_part_param_; fans.clear(); armors.clear(); centerRs.clear();