energy changed

This commit is contained in:
sun
2019-07-07 20:37:05 +08:00
parent 125c09b79e
commit 75ce387742
7 changed files with 45 additions and 17 deletions

View File

@@ -118,6 +118,7 @@ private:
void splitBayerBG(cv::Mat src, cv::Mat &blue, cv::Mat &red);//拜耳阵列分离
void imagePreprocess(cv::Mat &src);//图像通道分离
void hsvFilter(cv::Mat &src);//此函数通过HSV颜色空间对图像纯度进行限制进行滤光
void StructingElementClose(cv::Mat &src,int length, int width);//闭运算
void StructingElementErodeDilate(cv::Mat &src);//腐蚀和膨胀

View File

@@ -0,0 +1,28 @@
//
// Created by sun on 19-7-7.
//
#include "energy/energy.h"
using namespace std;
using namespace cv;
//----------------------------------------------------------------------------------------------------------------------
// 此函数用于利用HSV颜色空间对图像进行预处理
// ---------------------------------------------------------------------------------------------------------------------
void Energy::hsvFilter(cv::Mat &src){
Mat hsv, hsv_in_range;
cvtColor(src, hsv, CV_BGR2HSV);
// imshow("hsv", hsv);
vector<Mat> hsv_channels;
split(hsv, hsv_channels);
Mat H = hsv_channels.at(0);
Mat S = hsv_channels.at(1);
Mat V = hsv_channels.at(2);
// imshow("S", S);
inRange(hsv,Scalar(0,150,0),Scalar(180,255,255),hsv_in_range);
// imshow("in range", hsv_in_range);
}

View File

@@ -52,9 +52,9 @@ void Energy::imagePreprocess(cv::Mat &src) {
{
std::vector<Mat> channels;
split(src, channels);
resize(channels.at(0), src_blue, Size(SRC_WIDTH, SRC_HEIGHT));
resize(channels.at(1), src_green, Size(SRC_WIDTH, SRC_HEIGHT));
resize(channels.at(2), src_red, Size(SRC_WIDTH, SRC_HEIGHT));
resize(channels.at(0), src_blue, Size(src.size().width/2, src.size().height/2));
resize(channels.at(1), src_green, Size(src.size().width/2, src.size().height/2));
resize(channels.at(2), src_red, Size(src.size().width/2, src.size().height/2));
if(ally_color == ALLY_RED)
{
src = src_red-src_blue;
@@ -64,7 +64,7 @@ void Energy::imagePreprocess(cv::Mat &src) {
//src=src_blue;
}
}
cv::resize(src, src, cv::Size(640, 480), 2);
cv::resize(src, src, cv::Size(src.size().width * 2, src.size().height * 2), 2);
threshold(src, src, energy_part_param_.SPLIT_GRAY_THRESH, 255, THRESH_BINARY);
}

View File

@@ -73,7 +73,7 @@ int Energy::runBig(cv::Mat &gimble_src, cv::Mat &chassis_src){
// 此函数为大能量机关模式主控制流函数,且步兵仅拥有云台摄像头
// ---------------------------------------------------------------------------------------------------------------------
int Energy::runBig(cv::Mat &gimble_src){
// imshow("src",src);
imshow("src",gimble_src);
fans.clear();
armors.clear();
centerRs.clear();
@@ -82,22 +82,21 @@ int Energy::runBig(cv::Mat &gimble_src){
changeMark();
if (isMark)return 0;
// imagePreprocess(src);
// imshow("img_preprocess",src);
// imagePreprocess(gimble_src);
// imshow("img_preprocess", gimble_src);
threshold(gimble_src, gimble_src, energy_part_param_.GRAY_THRESH, 255, THRESH_BINARY);
// imshow("bin",src);
imshow("bin",gimble_src);
fans_cnt = findFan(gimble_src, last_fans_cnt);
// cout<<"fans_cnt: "<<fans_cnt<<endl;
if(fans_cnt==-1) return 0;//滤去漏判的帧
// if(fans_cnt>0)showFanContours("fan",src);
// fans_cnt=0;
armors_cnt = findArmor(gimble_src, last_armors_cnt);
// cout<<"armors_cnt: "<<armors_cnt<<endl;
if(armors_cnt==-1) return 0;//滤去漏判的帧
// if(armors_cnt>0) showArmorContours("armor",src);
// if(armors_cnt>0) showArmorContours("armor",gimble_src);
if(armors_cnt != fans_cnt+1) return 0;
@@ -142,7 +141,7 @@ 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();
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);