From c2b4bdf4cddc548c464a7729f93caafc4b7a1e6d Mon Sep 17 00:00:00 2001 From: JiatongSun Date: Sun, 28 Apr 2019 11:00:20 +0800 Subject: [PATCH] Auto Aim --- energy/src/energy/calibrate/structing.cpp | 2 +- energy/src/energy/find/energy_finder.cpp | 1 + energy/src/energy/param_init.cpp | 6 +-- energy/src/energy/run.cpp | 10 ++-- main.cpp | 12 ++--- others/include/camera/camera_wrapper.h | 4 ++ others/src/camera/camera_wrapper.cpp | 61 ++++++++++++++++------- 7 files changed, 64 insertions(+), 32 deletions(-) diff --git a/energy/src/energy/calibrate/structing.cpp b/energy/src/energy/calibrate/structing.cpp index 4b6ab13..da8a130 100644 --- a/energy/src/energy/calibrate/structing.cpp +++ b/energy/src/energy/calibrate/structing.cpp @@ -11,7 +11,7 @@ using std::vector; void Energy::StructingElementClose(cv::Mat &src){ if (src.empty())return; //threshold(src, src, energy_part_param_.CAMERA_GRAY_THRESH, 255, THRESH_BINARY); - Mat element = getStructuringElement(MORPH_RECT, Size(6, 6)); + Mat element = getStructuringElement(MORPH_RECT, Size(10, 10)); morphologyEx(src, src, MORPH_CLOSE, element); } diff --git a/energy/src/energy/find/energy_finder.cpp b/energy/src/energy/find/energy_finder.cpp index 0b928fb..efc04c3 100644 --- a/energy/src/energy/find/energy_finder.cpp +++ b/energy/src/energy/find/energy_finder.cpp @@ -36,6 +36,7 @@ int Energy::findFan(const cv::Mat &src, vector &fans, int &last_fans 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; + cout<<"fan area: "<20&&width>20){ // cout<200)first_armor_centers.clear(); // cout<<"first_armor_centers.size(): "<init() && video_armor->init()) { + if (video_energy->init()) { cout << "Video source initialization successfully." << endl; } @@ -69,7 +69,7 @@ int main(int argc, char *argv[]) energy.setAllyColor(ally_color); energy.setRotation(energy_part_rotation); - while (video_energy->read(energy_src) && video_armor->read(armor_src)) + while (video_energy->read(energy_src) && video_energy->read(armor_src)) { if(show_origin) { imshow("enery src", energy_src); @@ -90,7 +90,7 @@ int main(int argc, char *argv[]) break; } } - delete video_energy, video_armor; + delete video_energy; cout << "Program fails. Restarting" << endl; } @@ -119,7 +119,7 @@ void uartReceive(Uart* uart){ } memcpy(&curr_yaw, buffer, 4); memcpy(&curr_pitch, buffer+4, 4); -// LOGM("Get yaw:%f pitch:%f", curr_yaw, curr_pitch); + LOGM("Get yaw:%f pitch:%f", curr_yaw, curr_pitch); if(buffer[9] == 1){ if(mark == 0){ mark = 1; diff --git a/others/include/camera/camera_wrapper.h b/others/include/camera/camera_wrapper.h index 2e6cf99..9fba166 100644 --- a/others/include/camera/camera_wrapper.h +++ b/others/include/camera/camera_wrapper.h @@ -19,6 +19,7 @@ class CameraWrapper: public WrapperHead { private: const std::string name; + int mode; unsigned char* rgb_buffer; int camera_cnts; @@ -37,6 +38,9 @@ private: public: CameraWrapper(); CameraWrapper(const std::string &n); + CameraWrapper(int camera_mode); + CameraWrapper(const std::string &n,int camera_mode); + ~CameraWrapper() final; bool init() final; diff --git a/others/src/camera/camera_wrapper.cpp b/others/src/camera/camera_wrapper.cpp index c42effa..b924c86 100644 --- a/others/src/camera/camera_wrapper.cpp +++ b/others/src/camera/camera_wrapper.cpp @@ -9,16 +9,36 @@ using std::cout; using std::endl; using namespace cv; -CameraWrapper::CameraWrapper(const std::string &n): - name(n), - camera_cnts(2), - camera_status(-1), - iplImage(nullptr), - channel(3){ -} - CameraWrapper::CameraWrapper(): name("NULL"), + mode(1), + camera_cnts(2), + camera_status(-1), + iplImage(nullptr), + channel(3){ +} + +CameraWrapper::CameraWrapper(const std::string &n): + name(n), + mode(1), + camera_cnts(2), + camera_status(-1), + iplImage(nullptr), + channel(3){ +} + +CameraWrapper::CameraWrapper(int camera_mode): + name("NULL"), + mode(camera_mode), + camera_cnts(2), + camera_status(-1), + iplImage(nullptr), + channel(3){ +} + +CameraWrapper::CameraWrapper(const std::string &n,int camera_mode): + name(n), + mode(camera_mode), camera_cnts(2), camera_status(-1), iplImage(nullptr), @@ -68,15 +88,22 @@ bool CameraWrapper::init() { rgb_buffer = (unsigned char *)malloc(tCapability.sResolutionRange.iHeightMax * tCapability.sResolutionRange.iWidthMax * 3); - - // 不使用自动曝光 - CameraSetAeState(h_camera, false); - // 曝光时间10ms - CameraSetExposureTime(h_camera, 10000); - // 模拟增益4 - CameraSetAnalogGain(h_camera, 63); - // 使用预设LUT表 - CameraSetLutMode(h_camera, LUTMODE_PRESET); + if(mode == 0){ + // 不使用自动曝光 + CameraSetAeState(h_camera, false); + // 曝光时间10ms + CameraSetExposureTime(h_camera, 10000); + // 模拟增益4 + CameraSetAnalogGain(h_camera, 63); + // 使用预设LUT表 + CameraSetLutMode(h_camera, LUTMODE_PRESET); + } + else if(mode == 1){ + // 使用自动曝光 + CameraSetAeState(h_camera, true); + // 抗频闪 +// CameraSetAntiFlick(h_camera, true); + } /*让SDK进入工作模式,开始接收来自相机发送的图像 数据。如果当前相机是触发模式,则需要接收到