energy changed
This commit is contained in:
@@ -29,8 +29,8 @@ void ArmorFinder::run(cv::Mat &src) {
|
||||
showArmorBox("box", src, armor_box, boxid);
|
||||
cv::waitKey(1);
|
||||
}
|
||||
// stateSearchingTarget(src_use);
|
||||
// return;
|
||||
stateSearchingTarget(src_use);
|
||||
return;
|
||||
switch (state){
|
||||
case SEARCHING_STATE:
|
||||
if(stateSearchingTarget(src_use)){
|
||||
|
||||
@@ -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);//腐蚀和膨胀
|
||||
|
||||
28
energy/src/energy/calibrate/hsv_filter.cpp
Normal file
28
energy/src/energy/calibrate/hsv_filter.cpp
Normal 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);
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
6
main.cpp
6
main.cpp
@@ -56,8 +56,8 @@ int main(int argc, char *argv[]) {
|
||||
video_gimble = new CameraWrapper(0/*, "armor"*/);
|
||||
video_chassis = new CameraWrapper(1/*, "energy"*/);
|
||||
} else {
|
||||
video_gimble = new VideoWrapper("/Users/leo/Desktop/videos/179.avi");
|
||||
video_chassis = new VideoWrapper("/Users/leo/Desktop/videos/179.avi");
|
||||
video_gimble = new VideoWrapper("/home/sun/项目/energy_video/official_r_l.mp4");
|
||||
video_chassis = new VideoWrapper("/home/sun/项目/energy_video/energy_test.avi");
|
||||
}
|
||||
if (video_gimble->init()) {
|
||||
LOGM("video_gimble source initialization successfully.");
|
||||
@@ -117,7 +117,7 @@ int main(int argc, char *argv[]) {
|
||||
energy.runSmall(gimble_src);
|
||||
}
|
||||
}
|
||||
cv::waitKey(1);
|
||||
// cv::waitKey(1);
|
||||
});
|
||||
} while (ok);
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ bool CameraWrapper::init() {
|
||||
#elif defined(Linux)
|
||||
CameraSetAeState(h_camera, false);
|
||||
CameraSetExposureTime(h_camera, 10*1000);
|
||||
CameraSetAnalogGain(h_camera, 40);
|
||||
CameraSetAnalogGain(h_camera, 30);
|
||||
if(mode == 0){
|
||||
CameraSetGain(h_camera, 100, 100, 100);
|
||||
CameraSetLutMode(h_camera, LUTMODE_PRESET);
|
||||
|
||||
Reference in New Issue
Block a user