energy changed
This commit is contained in:
@@ -92,7 +92,6 @@ private:
|
||||
float sum_yaw, sum_pitch;//yaw和pitch的累计误差,即PID中积分项
|
||||
|
||||
systime time_start_guess;
|
||||
systime time_start_energy;
|
||||
|
||||
cv::RotatedRect centerR;//风车中心字母R的可能候选区
|
||||
cv::RotatedRect flow_strip;//图像中所有流动条(理论上只有一个)
|
||||
|
||||
@@ -17,7 +17,8 @@ using std::vector;
|
||||
// ---------------------------------------------------------------------------------------------------------------------
|
||||
struct EnergyPartParam {
|
||||
int GRAY_THRESH;//二值化阈值
|
||||
int SUB_GRAY_THRESH;//备用二值化阈值
|
||||
int RED_GRAY_THRESH;//红方二值化阈值
|
||||
int BLUE_GRAY_THRESH;//蓝方二值化阈值
|
||||
int SPLIT_GRAY_THRESH;//通道分离二值化阈值
|
||||
int FAN_GRAY_THRESH;//扇叶识别二值化阈值
|
||||
int ARMOR_GRAY_THRESH;//装甲板识别二值化阈值
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
using namespace std;
|
||||
using namespace cv;
|
||||
|
||||
extern McuData mcu_data;
|
||||
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------------
|
||||
// 此函数用于清空各vector
|
||||
@@ -26,15 +28,11 @@ void Energy::clearAll() {
|
||||
void Energy::initImage(cv::Mat &src) {
|
||||
// imagePreprocess(src);
|
||||
// if(show_process)imshow("img_preprocess", src);
|
||||
systime cur_time;
|
||||
getsystime(cur_time);
|
||||
float interval = getTimeIntervalms(cur_time, time_start_energy);
|
||||
|
||||
if (src.type() == CV_8UC3)cvtColor(src, src, COLOR_BGR2GRAY);
|
||||
if(interval > 3000 && !is_find_target){
|
||||
threshold(src, src, energy_part_param_.SUB_GRAY_THRESH, 255, THRESH_BINARY);
|
||||
}else{
|
||||
threshold(src, src, energy_part_param_.GRAY_THRESH, 255, THRESH_BINARY);
|
||||
if (mcu_data.enemy_color == ENEMY_BLUE){
|
||||
threshold(src, src, energy_part_param_.RED_GRAY_THRESH, 255, THRESH_BINARY);
|
||||
} else if(mcu_data.enemy_color == ENEMY_RED){
|
||||
threshold(src, src, energy_part_param_.BLUE_GRAY_THRESH, 255, THRESH_BINARY);
|
||||
}
|
||||
if (show_process)imshow("bin", src);
|
||||
if (show_energy)waitKey(1);
|
||||
|
||||
@@ -83,16 +83,16 @@ void Energy::initEnergy() {
|
||||
void Energy::initEnergyPartParam() {
|
||||
// gimbal_energy_part_param_.GRAY_THRESH = 120;//home
|
||||
// gimbal_energy_part_param_.GRAY_THRESH = 200;//official
|
||||
gimbal_energy_part_param_.GRAY_THRESH = 180;//game
|
||||
gimbal_energy_part_param_.SUB_GRAY_THRESH = 100;
|
||||
gimbal_energy_part_param_.RED_GRAY_THRESH = 180;//game
|
||||
gimbal_energy_part_param_.BLUE_GRAY_THRESH = 100;//game
|
||||
gimbal_energy_part_param_.SPLIT_GRAY_THRESH = 180;
|
||||
gimbal_energy_part_param_.FAN_GRAY_THRESH = 75;
|
||||
gimbal_energy_part_param_.ARMOR_GRAY_THRESH = 80;
|
||||
|
||||
gimbal_energy_part_param_.FAN_CONTOUR_AREA_MAX = 3000;
|
||||
gimbal_energy_part_param_.FAN_CONTOUR_AREA_MIN = 500;
|
||||
gimbal_energy_part_param_.FAN_CONTOUR_AREA_MAX = 5000;
|
||||
gimbal_energy_part_param_.FAN_CONTOUR_AREA_MIN = 1500;
|
||||
gimbal_energy_part_param_.FAN_CONTOUR_LENGTH_MIN = 55;
|
||||
gimbal_energy_part_param_.FAN_CONTOUR_LENGTH_MAX = 95;
|
||||
gimbal_energy_part_param_.FAN_CONTOUR_LENGTH_MAX = 100;
|
||||
gimbal_energy_part_param_.FAN_CONTOUR_WIDTH_MIN = 20;
|
||||
gimbal_energy_part_param_.FAN_CONTOUR_WIDTH_MAX = 52;
|
||||
gimbal_energy_part_param_.FAN_CONTOUR_HW_RATIO_MAX = 3.5;
|
||||
|
||||
@@ -53,8 +53,6 @@ void Energy::setBigEnergyInit() {
|
||||
initEnergy();
|
||||
initEnergyPartParam();
|
||||
|
||||
getsystime(time_start_energy);
|
||||
|
||||
is_big = true;
|
||||
is_small = false;
|
||||
is_gimbal = true;
|
||||
|
||||
@@ -79,22 +79,12 @@ void Energy::runBig(cv::Mat &gimbal_src) {
|
||||
if (findArmors(gimbal_src) < 1)return;
|
||||
if (show_energy)showArmors("armor", gimbal_src);
|
||||
if (!findFlowStripFan(gimbal_src)) {
|
||||
if (!findFlowStripWeak(gimbal_src)){
|
||||
is_find_target = false;
|
||||
return;
|
||||
}
|
||||
if (!findFlowStripWeak(gimbal_src)) return;
|
||||
} else {
|
||||
if (show_energy)showFlowStripFan("strip fan", gimbal_src);
|
||||
if (!findTargetInFlowStripFan()) {
|
||||
is_find_target = false;
|
||||
return;
|
||||
}
|
||||
if (!findFlowStrip(gimbal_src)){
|
||||
is_find_target = false;
|
||||
return;
|
||||
}
|
||||
if (!findTargetInFlowStripFan()) return;
|
||||
if (!findFlowStrip(gimbal_src))return;
|
||||
}
|
||||
is_find_target = true;
|
||||
if (!findCenterROI(gimbal_src))return;
|
||||
if (show_energy)showFlowStrip("strip", gimbal_src);
|
||||
if (!findCenterR(gimbal_src))return;
|
||||
@@ -135,22 +125,12 @@ void Energy::runSmall(cv::Mat &gimbal_src) {
|
||||
if (findArmors(gimbal_src) < 1)return;
|
||||
if (show_energy)showArmors("armor", gimbal_src);
|
||||
if (!findFlowStripFan(gimbal_src)) {
|
||||
if (!findFlowStripWeak(gimbal_src)){
|
||||
is_find_target = false;
|
||||
return;
|
||||
}
|
||||
if (!findFlowStripWeak(gimbal_src)) return;
|
||||
} else {
|
||||
if (show_energy)showFlowStripFan("strip fan", gimbal_src);
|
||||
if (!findTargetInFlowStripFan()) {
|
||||
is_find_target = false;
|
||||
return;
|
||||
}
|
||||
if (!findFlowStrip(gimbal_src)){
|
||||
is_find_target = false;
|
||||
return;
|
||||
}
|
||||
if (!findTargetInFlowStripFan()) return;
|
||||
if (!findFlowStrip(gimbal_src)) return;
|
||||
}
|
||||
is_find_target = true;
|
||||
if (show_energy)showTarget("target", gimbal_src);
|
||||
fans_cnt = findFans(gimbal_src);
|
||||
if (show_energy)showFans("fans", gimbal_src);
|
||||
|
||||
Reference in New Issue
Block a user