energy changed
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user