From 07af506821ef2bbae4fa43ef62fd33eba6e2202c Mon Sep 17 00:00:00 2001 From: sun Date: Sat, 6 Jul 2019 20:15:09 +0800 Subject: [PATCH] energy changed --- energy/src/energy/calibrate/structing.cpp | 10 +++++----- energy/src/energy/find/energy_finder.cpp | 18 +++++++++--------- energy/src/energy/param_init.cpp | 10 +++++----- energy/src/energy/run.cpp | 2 ++ 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/energy/src/energy/calibrate/structing.cpp b/energy/src/energy/calibrate/structing.cpp index 5b80be8..356e66c 100644 --- a/energy/src/energy/calibrate/structing.cpp +++ b/energy/src/energy/calibrate/structing.cpp @@ -27,9 +27,9 @@ void Energy::StructingElementClose(cv::Mat &src,int length, int width){ void Energy::StructingElementErodeDilate(cv::Mat &src) { cv::Mat src_out, src_out_out; Mat element_dilate_1 = getStructuringElement(MORPH_RECT, Size(3, 3)); - Mat element_erode_1 = getStructuringElement(MORPH_RECT, Size(2, 1)); + Mat element_erode_1 = getStructuringElement(MORPH_RECT, Size(3, 4)); Mat element_dilate_2 = getStructuringElement(MORPH_RECT, Size(8, 6)); - Mat element_erode_2 = getStructuringElement(MORPH_RECT, Size(4,4)); + Mat element_erode_2 = getStructuringElement(MORPH_RECT, Size(4 , 4)); Mat element_dilate_3 = getStructuringElement(MORPH_RECT, Size(3, 3)); @@ -42,9 +42,9 @@ void Energy::StructingElementErodeDilate(cv::Mat &src) { dilate(src, src, element_dilate_2); // imshow("dilate_2", src); - erode(src,src, element_erode_2); -// imshow("erode_2", src); - dilate(src, src, element_dilate_3); // imshow("dilate_3", src); + + erode(src,src, element_erode_2); + imshow("erode_2", src); } diff --git a/energy/src/energy/find/energy_finder.cpp b/energy/src/energy/find/energy_finder.cpp index 7f6ee9b..8e9f390 100644 --- a/energy/src/energy/find/energy_finder.cpp +++ b/energy/src/energy/find/energy_finder.cpp @@ -103,15 +103,15 @@ int Energy::findArmor(const cv::Mat src, int &last_armors_cnt) { } armors.emplace_back(armor_contour); - /* RotatedRect cur_rect = minAreaRect(armor_contour); - Size2f cur_size = cur_rect.size; - float length = cur_size.height > cur_size.width ? cur_size.height : cur_size.width; - float width = cur_size.height < cur_size.width ? cur_size.height : cur_size.width; - if(length>10&&width>5){ - armors.emplace_back(armor_contour); - cout<<"armor area: "< cur_size.width ? cur_size.height : cur_size.width; +// float width = cur_size.height < cur_size.width ? cur_size.height : cur_size.width; +// if(length>10&&width>5){ +// armors.emplace_back(armor_contour); +// cout<<"armor area: "<(armors.size()); diff --git a/energy/src/energy/param_init.cpp b/energy/src/energy/param_init.cpp index a25219e..02251b5 100644 --- a/energy/src/energy/param_init.cpp +++ b/energy/src/energy/param_init.cpp @@ -66,7 +66,7 @@ void Energy::initEnergy() { // 此函数对能量机关参数进行初始化 // --------------------------------------------------------------------------------------------------------------------- void Energy::initEnergyPartParam() { - energy_part_param_.GRAY_THRESH = 240; + energy_part_param_.GRAY_THRESH = 235; energy_part_param_.SPLIT_GRAY_THRESH = 60; energy_part_param_.FAN_GRAY_THRESH = 75; energy_part_param_.ARMOR_GRAY_THRESH = 80; @@ -82,10 +82,10 @@ void Energy::initEnergyPartParam() { 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_LENGTH_MIN = 15; + 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; diff --git a/energy/src/energy/run.cpp b/energy/src/energy/run.cpp index 901bd20..25e8799 100644 --- a/energy/src/energy/run.cpp +++ b/energy/src/energy/run.cpp @@ -137,9 +137,11 @@ 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); fans.clear(); armors.clear(); threshold(gimble_src, gimble_src, energy_part_param_.GRAY_THRESH, 255, THRESH_BINARY); + imshow("bin",gimble_src); fans_cnt = findFan(gimble_src, last_fans_cnt); armors_cnt = findArmor(gimble_src, last_armors_cnt); if(fans_cnt==-1 || armors_cnt==-1 || armors_cnt != fans_cnt+1) return 0;