energy changed
This commit is contained in:
@@ -29,8 +29,8 @@ void ArmorFinder::run(cv::Mat &src) {
|
|||||||
showArmorBox("box", src, armor_box, boxid);
|
showArmorBox("box", src, armor_box, boxid);
|
||||||
cv::waitKey(1);
|
cv::waitKey(1);
|
||||||
}
|
}
|
||||||
// stateSearchingTarget(src_use);
|
stateSearchingTarget(src_use);
|
||||||
// return;
|
return;
|
||||||
switch (state){
|
switch (state){
|
||||||
case SEARCHING_STATE:
|
case SEARCHING_STATE:
|
||||||
if(stateSearchingTarget(src_use)){
|
if(stateSearchingTarget(src_use)){
|
||||||
|
|||||||
@@ -118,6 +118,7 @@ private:
|
|||||||
|
|
||||||
void splitBayerBG(cv::Mat src, cv::Mat &blue, cv::Mat &red);//拜耳阵列分离
|
void splitBayerBG(cv::Mat src, cv::Mat &blue, cv::Mat &red);//拜耳阵列分离
|
||||||
void imagePreprocess(cv::Mat &src);//图像通道分离
|
void imagePreprocess(cv::Mat &src);//图像通道分离
|
||||||
|
void hsvFilter(cv::Mat &src);//此函数通过HSV颜色空间对图像纯度进行限制,进行滤光
|
||||||
|
|
||||||
void StructingElementClose(cv::Mat &src,int length, int width);//闭运算
|
void StructingElementClose(cv::Mat &src,int length, int width);//闭运算
|
||||||
void StructingElementErodeDilate(cv::Mat &src);//腐蚀和膨胀
|
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;
|
std::vector<Mat> channels;
|
||||||
split(src, channels);
|
split(src, channels);
|
||||||
resize(channels.at(0), src_blue, 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_WIDTH, SRC_HEIGHT));
|
resize(channels.at(1), src_green, Size(src.size().width/2, src.size().height/2));
|
||||||
resize(channels.at(2), src_red, Size(SRC_WIDTH, SRC_HEIGHT));
|
resize(channels.at(2), src_red, Size(src.size().width/2, src.size().height/2));
|
||||||
if(ally_color == ALLY_RED)
|
if(ally_color == ALLY_RED)
|
||||||
{
|
{
|
||||||
src = src_red-src_blue;
|
src = src_red-src_blue;
|
||||||
@@ -64,7 +64,7 @@ void Energy::imagePreprocess(cv::Mat &src) {
|
|||||||
//src=src_blue;
|
//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);
|
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){
|
int Energy::runBig(cv::Mat &gimble_src){
|
||||||
// imshow("src",src);
|
imshow("src",gimble_src);
|
||||||
fans.clear();
|
fans.clear();
|
||||||
armors.clear();
|
armors.clear();
|
||||||
centerRs.clear();
|
centerRs.clear();
|
||||||
@@ -82,22 +82,21 @@ int Energy::runBig(cv::Mat &gimble_src){
|
|||||||
|
|
||||||
changeMark();
|
changeMark();
|
||||||
if (isMark)return 0;
|
if (isMark)return 0;
|
||||||
// imagePreprocess(src);
|
// imagePreprocess(gimble_src);
|
||||||
// imshow("img_preprocess",src);
|
// imshow("img_preprocess", gimble_src);
|
||||||
|
|
||||||
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",src);
|
imshow("bin",gimble_src);
|
||||||
|
|
||||||
fans_cnt = findFan(gimble_src, last_fans_cnt);
|
fans_cnt = findFan(gimble_src, last_fans_cnt);
|
||||||
// cout<<"fans_cnt: "<<fans_cnt<<endl;
|
// cout<<"fans_cnt: "<<fans_cnt<<endl;
|
||||||
if(fans_cnt==-1) return 0;//滤去漏判的帧
|
if(fans_cnt==-1) return 0;//滤去漏判的帧
|
||||||
// if(fans_cnt>0)showFanContours("fan",src);
|
// if(fans_cnt>0)showFanContours("fan",src);
|
||||||
// fans_cnt=0;
|
|
||||||
|
|
||||||
armors_cnt = findArmor(gimble_src, last_armors_cnt);
|
armors_cnt = findArmor(gimble_src, last_armors_cnt);
|
||||||
// cout<<"armors_cnt: "<<armors_cnt<<endl;
|
// cout<<"armors_cnt: "<<armors_cnt<<endl;
|
||||||
if(armors_cnt==-1) return 0;//滤去漏判的帧
|
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;
|
if(armors_cnt != fans_cnt+1) return 0;
|
||||||
|
|
||||||
@@ -142,7 +141,7 @@ 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);
|
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);
|
imshow("bin",gimble_src);
|
||||||
fans_cnt = findFan(gimble_src, last_fans_cnt);
|
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_gimble = new CameraWrapper(0/*, "armor"*/);
|
||||||
video_chassis = new CameraWrapper(1/*, "energy"*/);
|
video_chassis = new CameraWrapper(1/*, "energy"*/);
|
||||||
} else {
|
} else {
|
||||||
video_gimble = new VideoWrapper("/Users/leo/Desktop/videos/179.avi");
|
video_gimble = new VideoWrapper("/home/sun/项目/energy_video/official_r_l.mp4");
|
||||||
video_chassis = new VideoWrapper("/Users/leo/Desktop/videos/179.avi");
|
video_chassis = new VideoWrapper("/home/sun/项目/energy_video/energy_test.avi");
|
||||||
}
|
}
|
||||||
if (video_gimble->init()) {
|
if (video_gimble->init()) {
|
||||||
LOGM("video_gimble source initialization successfully.");
|
LOGM("video_gimble source initialization successfully.");
|
||||||
@@ -117,7 +117,7 @@ int main(int argc, char *argv[]) {
|
|||||||
energy.runSmall(gimble_src);
|
energy.runSmall(gimble_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cv::waitKey(1);
|
// cv::waitKey(1);
|
||||||
});
|
});
|
||||||
} while (ok);
|
} while (ok);
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ bool CameraWrapper::init() {
|
|||||||
#elif defined(Linux)
|
#elif defined(Linux)
|
||||||
CameraSetAeState(h_camera, false);
|
CameraSetAeState(h_camera, false);
|
||||||
CameraSetExposureTime(h_camera, 10*1000);
|
CameraSetExposureTime(h_camera, 10*1000);
|
||||||
CameraSetAnalogGain(h_camera, 40);
|
CameraSetAnalogGain(h_camera, 30);
|
||||||
if(mode == 0){
|
if(mode == 0){
|
||||||
CameraSetGain(h_camera, 100, 100, 100);
|
CameraSetGain(h_camera, 100, 100, 100);
|
||||||
CameraSetLutMode(h_camera, LUTMODE_PRESET);
|
CameraSetLutMode(h_camera, LUTMODE_PRESET);
|
||||||
|
|||||||
Reference in New Issue
Block a user