energy changed

This commit is contained in:
sun
2019-08-07 14:09:58 +08:00
parent 8133aeedea
commit 518eb22867
7 changed files with 35 additions and 56 deletions

View File

@@ -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;//图像中所有流动条(理论上只有一个)

View File

@@ -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;//装甲板识别二值化阈值

View File

@@ -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);

View File

@@ -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;

View File

@@ -53,8 +53,6 @@ void Energy::setBigEnergyInit() {
initEnergy();
initEnergyPartParam();
getsystime(time_start_energy);
is_big = true;
is_small = false;
is_gimbal = true;

View File

@@ -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);