energy changed

This commit is contained in:
sun
2019-07-06 20:15:09 +08:00
parent 1929c39d70
commit 07af506821
4 changed files with 21 additions and 19 deletions

View File

@@ -27,9 +27,9 @@ void Energy::StructingElementClose(cv::Mat &src,int length, int width){
void Energy::StructingElementErodeDilate(cv::Mat &src) { void Energy::StructingElementErodeDilate(cv::Mat &src) {
cv::Mat src_out, src_out_out; cv::Mat src_out, src_out_out;
Mat element_dilate_1 = getStructuringElement(MORPH_RECT, Size(3, 3)); 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_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)); 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); dilate(src, src, element_dilate_2);
// imshow("dilate_2", src); // imshow("dilate_2", src);
erode(src,src, element_erode_2);
// imshow("erode_2", src);
dilate(src, src, element_dilate_3); dilate(src, src, element_dilate_3);
// imshow("dilate_3", src); // imshow("dilate_3", src);
erode(src,src, element_erode_2);
imshow("erode_2", src);
} }

View File

@@ -103,15 +103,15 @@ int Energy::findArmor(const cv::Mat src, int &last_armors_cnt) {
} }
armors.emplace_back(armor_contour); armors.emplace_back(armor_contour);
/* RotatedRect cur_rect = minAreaRect(armor_contour); // RotatedRect cur_rect = minAreaRect(armor_contour);
Size2f cur_size = cur_rect.size; // Size2f cur_size = cur_rect.size;
float length = cur_size.height > cur_size.width ? cur_size.height : cur_size.width; // 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; // float width = cur_size.height < cur_size.width ? cur_size.height : cur_size.width;
if(length>10&&width>5){ // if(length>10&&width>5){
armors.emplace_back(armor_contour); // armors.emplace_back(armor_contour);
cout<<"armor area: "<<length<<'\t'<<width<<'\t'<<cur_rect.center<<endl; // cout<<"armor area: "<<length<<'\t'<<width<<'\t'<<cur_rect.center<<endl;
} // }
cout<<"armor area: "<<length<<'\t'<<width<<endl;*/
} }
if(armors.size() < last_armors_cnt){ if(armors.size() < last_armors_cnt){
last_armors_cnt = static_cast<int>(armors.size()); last_armors_cnt = static_cast<int>(armors.size());

View File

@@ -66,7 +66,7 @@ void Energy::initEnergy() {
// 此函数对能量机关参数进行初始化 // 此函数对能量机关参数进行初始化
// --------------------------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------------------
void Energy::initEnergyPartParam() { 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_.SPLIT_GRAY_THRESH = 60;
energy_part_param_.FAN_GRAY_THRESH = 75; energy_part_param_.FAN_GRAY_THRESH = 75;
energy_part_param_.ARMOR_GRAY_THRESH = 80; 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_MAX = 100000;
energy_part_param_.ARMOR_CONTOUR_AREA_MIN = 0; energy_part_param_.ARMOR_CONTOUR_AREA_MIN = 0;
energy_part_param_.ARMOR_CONTOUR_LENGTH_MIN = 30; energy_part_param_.ARMOR_CONTOUR_LENGTH_MIN = 15;
energy_part_param_.ARMOR_CONTOUR_WIDTH_MIN = 15; energy_part_param_.ARMOR_CONTOUR_WIDTH_MIN = 5;
energy_part_param_.ARMOR_CONTOUR_LENGTH_MAX = 50; energy_part_param_.ARMOR_CONTOUR_LENGTH_MAX = 30;
energy_part_param_.ARMOR_CONTOUR_WIDTH_MAX = 45; energy_part_param_.ARMOR_CONTOUR_WIDTH_MAX = 20;
energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MAX = 3; energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MAX = 3;
energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MIN = 1; energy_part_param_.ARMOR_CONTOUR_HW_RATIO_MIN = 1;

View File

@@ -137,9 +137,11 @@ int Energy::runBig(cv::Mat &gimble_src){
// --------------------------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------------------
int Energy::runSmall(cv::Mat &gimble_src){ int Energy::runSmall(cv::Mat &gimble_src){
imshow("gimble src", gimble_src); imshow("gimble src", gimble_src);
if(gimble_src.type()== CV_8UC3)cvtColor(gimble_src, gimble_src, COLOR_BGR2GRAY);
fans.clear(); fans.clear();
armors.clear(); armors.clear();
threshold(gimble_src, gimble_src, energy_part_param_.GRAY_THRESH, 255, THRESH_BINARY); 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); fans_cnt = findFan(gimble_src, last_fans_cnt);
armors_cnt = findArmor(gimble_src, last_armors_cnt); armors_cnt = findArmor(gimble_src, last_armors_cnt);
if(fans_cnt==-1 || armors_cnt==-1 || armors_cnt != fans_cnt+1) return 0; if(fans_cnt==-1 || armors_cnt==-1 || armors_cnt != fans_cnt+1) return 0;