diff --git a/armor/src/armor_finder/armor_finder.cpp b/armor/src/armor_finder/armor_finder.cpp index af0d136..7f5bbc6 100644 --- a/armor/src/armor_finder/armor_finder.cpp +++ b/armor/src/armor_finder/armor_finder.cpp @@ -15,13 +15,13 @@ /* */ /*===========================================================================*/ -//#define LOG_LEVEL LOG_NONE - +#define LOG_LEVEL LOG_NONE #include #include #include #include #include +#include std::map id2name = { //装甲板id到名称的map {-1, "OO"},{ 0, "NO"}, @@ -71,14 +71,14 @@ void ArmorFinder::run(cv::Mat &src) { tracker->init(src_use, armor_box); state = TRACKING_STATE; tracking_cnt = 0; -// LOGM(STR_CTR(WORD_LIGHT_CYAN, "into track")); + LOGM(STR_CTR(WORD_LIGHT_CYAN, "into track")); } } break; case TRACKING_STATE: if (!stateTrackingTarget(src_use) || ++tracking_cnt > 100) { // 最多追踪100帧图像 state = SEARCHING_STATE; -// LOGM(STR_CTR(WORD_LIGHT_YELLOW, "into search!")); + LOGM(STR_CTR(WORD_LIGHT_YELLOW, "into search!")); } break; case STANDBY_STATE: diff --git a/main.cpp b/main.cpp index c850577..32fdd94 100644 --- a/main.cpp +++ b/main.cpp @@ -27,7 +27,7 @@ using namespace std; mcu_data mcuData = { // 单片机端回传结构体 0, // 当前云台yaw角 0, // 当前云台pitch角 - BIG_ENERGY_STATE, // 当前状态,自瞄-大符-小符 + ARMOR_STATE, // 当前状态,自瞄-大符-小符 0, // 云台角度标记位 1, // 是否启用数字识别 ENEMY_RED, // 敌方颜色 @@ -94,28 +94,37 @@ int main(int argc, char *argv[]) { do { CNT_TIME("Total", { if (mcuData.state == BIG_ENERGY_STATE) {//大符模式 + if (last_state != BIG_ENERGY_STATE) {//若上一帧不是大符模式,即刚往完成切换,则需要初始化 + energy.setEnergyRotationInit(); + ((CameraWrapper*)video_gimble)->changeBrightness(20); + cout << "set" << endl; + } ok = checkReconnect(video_gimble->read(gimble_src), video_chassis->read(chassis_src));//检查有几个摄像头 if (save_video) saveVideos(gimble_src, chassis_src);//保存视频 if (show_origin) showOrigin(gimble_src, chassis_src);//显示原始图像 - if (last_state != BIG_ENERGY_STATE) {//若上一帧不是大符模式,即刚往完成切换,则需要初始化 - energy.setEnergyRotationInit(); - cout << "set" << endl; - } energy.runBig(gimble_src, chassis_src);//击打大符 // energy.runBig(gimble_src); last_state = mcuData.state;//更新上一帧状态 - } else if (mcuData.state != BIG_ENERGY_STATE) {//自瞄或小符模式 + } else if (mcuData.state == SMALL_ENERGY_STATE) {// 小符模式 + if(last_state == ARMOR_STATE){ + ((CameraWrapper*)video_gimble)->changeBrightness(20); + } last_state = mcuData.state; ok = checkReconnect(video_gimble->read(gimble_src)); if (save_video) saveVideos(gimble_src); if (show_origin) showOrigin(gimble_src); - if (mcuData.state == ARMOR_STATE) { - CNT_TIME("Armor Time", { - armorFinder.run(gimble_src); - }); - } else if (mcuData.state == SMALL_ENERGY_STATE) { - energy.runSmall(gimble_src); + energy.runSmall(gimble_src); + } else { // 自瞄模式 + if(last_state != ARMOR_STATE){ + ((CameraWrapper*)video_gimble)->changeBrightness(40); } + last_state = mcuData.state; + ok = checkReconnect(video_gimble->read(gimble_src)); + if (save_video) saveVideos(gimble_src); + if (show_origin) showOrigin(gimble_src); + CNT_TIME("Armor Time", { + armorFinder.run(gimble_src); + }); } // cv::waitKey(0); }); diff --git a/others/include/camera/camera_wrapper.h b/others/include/camera/camera_wrapper.h index 06496a8..37c6fa7 100644 --- a/others/include/camera/camera_wrapper.h +++ b/others/include/camera/camera_wrapper.h @@ -47,8 +47,7 @@ public: bool read(cv::Mat& src) final; bool readRaw(cv::Mat& src); bool readProcessed(cv::Mat& src); - - + bool changeBrightness(int brightness); }; diff --git a/others/src/camera/camera_wrapper.cpp b/others/src/camera/camera_wrapper.cpp index b6f4cd6..eb328e4 100644 --- a/others/src/camera/camera_wrapper.cpp +++ b/others/src/camera/camera_wrapper.cpp @@ -109,6 +109,9 @@ bool CameraWrapper::init() { return true; } +bool CameraWrapper::changeBrightness(int brightness) { + CameraSetAnalogGain(h_camera, brightness); +} bool CameraWrapper::read(cv::Mat& src) { if(mode==0)return readProcessed(src);