From 13ffc6efe6d790f8930b285897fa0437755f1035 Mon Sep 17 00:00:00 2001 From: xinyang Date: Wed, 8 May 2019 20:43:29 +0800 Subject: [PATCH] fix bug. --- CMakeLists.txt | 7 ++- armor/src/armor_finder/armor_finder.cpp | 4 +- main.cpp | 15 ++++-- others/include/options/options.h | 66 ++++++++++++++++++++++--- others/src/camera/camera_wrapper.cpp | 2 +- others/src/options/additions.cpp | 30 ++++++----- others/src/options/options.cpp | 4 ++ 7 files changed, 98 insertions(+), 30 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0edf4b9..98501bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,12 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.5) PROJECT(AutoAim) SET(CMAKE_CXX_STANDARD 11) SET(CMAKE_BUILD_TYPE RELEASE) -SET(CMAKE_CXX_FLAGS "-DPATH=\"\\\"${PROJECT_SOURCE_DIR}\\\"\"") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPATH=\"\\\"${PROJECT_SOURCE_DIR}\\\"\"") +## 使用编译期固定选项,以略微提升性能。 +#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFIX_OPTIONS") +## 固定使用相机运行 +#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRUN_WITH_CAMERA") FIND_PROGRAM(CCACHE_FOUND ccache) IF(CCACHE_FOUND) diff --git a/armor/src/armor_finder/armor_finder.cpp b/armor/src/armor_finder/armor_finder.cpp index 2c2b492..8ee25c2 100644 --- a/armor/src/armor_finder/armor_finder.cpp +++ b/armor/src/armor_finder/armor_finder.cpp @@ -57,7 +57,7 @@ void ArmorFinder::run(cv::Mat &src) { } } -#define FOCUS_PIXAL (800) +#define FOCUS_PIXAL (600) bool ArmorFinder::sendBoxPosition() { static int dx_add = 0; @@ -68,7 +68,7 @@ bool ArmorFinder::sendBoxPosition() { double dy = rect.y + rect.height/2 - 240 - 30; double yaw = atan(dx / FOCUS_PIXAL) * 180 / 3.14159265459; double pitch = atan(dy / FOCUS_PIXAL) * 180 / 3.14159265459; - cout << yaw << endl; +// cout << yaw << endl; uart.sendTarget(yaw, -pitch, 0); return true; } \ No newline at end of file diff --git a/main.cpp b/main.cpp index 98345b9..d37a1c5 100644 --- a/main.cpp +++ b/main.cpp @@ -36,7 +36,7 @@ void uartReceive(Uart *uart); int main(int argc, char *argv[]) { process_options(argc, argv); Uart uart; -// thread receive(uartReceive, &uart); + thread receive(uartReceive, &uart); bool flag = true; while (flag) { @@ -52,7 +52,7 @@ int main(int argc, char *argv[]) { WrapperHead *video_armor; WrapperHead *video_energy; if (from_camera) { - video_armor = new CameraWrapper(0); + video_armor = new CameraWrapper(0, "armor"); // video_energy = new CameraWrapper(1, "energy"); } else { video_armor = new VideoWrapper("/home/xinyang/Desktop/DataSets/video/blue_4.mp4"); @@ -63,13 +63,18 @@ int main(int argc, char *argv[]) { } Mat energy_src, armor_src; + for(int i=0; i<10; i++){ + video_armor->read(armor_src); +// video_energy->read(armor_src); + } + ArmorFinder armorFinder(ENEMY_BLUE, uart, PROJECT_DIR"/tools/para/"); Energy energy(uart); energy.setAllyColor(ally_color); energy.setRotation(energy_part_rotation); - bool ok = true; + bool ok = video_armor->read(armor_src) /*&& video_energy->read(armor_src)*/; while (ok) { CNT_TIME(WORD_LIGHT_CYAN, "Total", { @@ -88,7 +93,7 @@ int main(int argc, char *argv[]) { imshow("armor src", armor_src); } CNT_TIME(WORD_LIGHT_BLUE, "Armor Time", { - armorFinder.run(armor_src); + armorFinder.run(armor_src); }); } if (waitKey(1) == 'q') { @@ -104,7 +109,7 @@ int main(int argc, char *argv[]) { return 0; } -#define RECEIVE_LOG_LEVEL LOG_NOTHING +#define RECEIVE_LOG_LEVEL LOG_MSG void uartReceive(Uart *uart) { char buffer[100]; diff --git a/others/include/options/options.h b/others/include/options/options.h index 73b8a7d..082b927 100644 --- a/others/include/options/options.h +++ b/others/include/options/options.h @@ -5,14 +5,64 @@ #ifndef _OPTIONS_H_ #define _OPTIONS_H_ -extern bool show_armor_box; -extern bool show_armor_boxes; -extern bool show_light_blobs; -extern bool show_origin; -extern bool save_labelled; -extern bool run_with_camera; -extern bool save_video; -extern bool collect_data; +#ifdef FIX_OPTIONS + #ifdef SHOW_ARMOR_BOX + #define show_armor_box true + #else + #define show_armor_box false + #endif + + #ifdef SHOW_ARMOR_BOXES + #define show_armor_boxes true + #else + #define show_armor_boxes false + #endif + + #ifdef SHOW_LIGHT_BLOBS + #define show_light_blobs true + #else + #define show_light_blobs false + #endif + + #ifdef SHOW_ORIGIN + #define show_origin true + #else + #define show_origin false + #endif + + #ifdef SAVE_LABELLED + #define save_labelled true + #else + #define save_labelled false + #endif + + #ifdef RUN_WITH_CAMERA + #define run_with_camera true + #else + #define run_with_camera false + #endif + + #ifdef SAVE_VIDEO + #define save_video true + #else + #define save_video false + #endif + + #ifdef COLLECT_DATA + #define collect_data true + #else + #define collect_data false + #endif +#else /* FIX_OPTIONS */ + extern bool show_armor_box; + extern bool show_armor_boxes; + extern bool show_light_blobs; + extern bool show_origin; + extern bool save_labelled; + extern bool run_with_camera; + extern bool save_video; + extern bool collect_data; +#endif /* FIX_OPTIONS */ void process_options(int argc, char *argv[]); diff --git a/others/src/camera/camera_wrapper.cpp b/others/src/camera/camera_wrapper.cpp index 8f1fede..ad2c152 100644 --- a/others/src/camera/camera_wrapper.cpp +++ b/others/src/camera/camera_wrapper.cpp @@ -72,7 +72,7 @@ stop: CameraGetExposureTime(h_camera, &t); LOGM("Exposure time: %lfms", t/1000.0); // 模拟增益4 - CameraSetAnalogGain(h_camera, 55); + CameraSetAnalogGain(h_camera, 60); // 使用预设LUT表 CameraSetLutMode(h_camera, LUTMODE_PRESET); // 抗频闪 diff --git a/others/src/options/additions.cpp b/others/src/options/additions.cpp index 5bf367e..71cdc31 100644 --- a/others/src/options/additions.cpp +++ b/others/src/options/additions.cpp @@ -35,6 +35,8 @@ void save_video_file(cv::Mat &src){ #define SAVE_DIR "/home/sjturm/Desktop/labelled/" +bool save_label_error_flag = false; + int get_labelled_cnt(){ FILE *fp = fopen(SAVE_DIR"info.txt", "r"); int cnt=0; @@ -50,18 +52,20 @@ void save_labelled_cnt(int cnt){ } void save_labelled_image(cv::Mat &src, cv::Rect2d box){ - static int cnt=get_labelled_cnt(); - char name[50]; - sprintf(name, SAVE_DIR"%d.jpg", cnt); - cv::imwrite(name, src); - sprintf(name, SAVE_DIR"%d.txt", cnt); - FILE *fp = fopen(name, "w"); - if(fp == NULL){ - LOGW("Can't create file: %s!\nStop saving!", name); - save_labelled = false; - return; + if(!save_label_error_flag) { + static int cnt = get_labelled_cnt(); + char name[50]; + sprintf(name, SAVE_DIR"%d.jpg", cnt); + cv::imwrite(name, src); + sprintf(name, SAVE_DIR"%d.txt", cnt); + FILE *fp = fopen(name, "w"); + if (fp == NULL) { + LOGW("Can't create file: %s!\nStop saving!", name); + save_label_error_flag = true; + return; + } + fprintf(fp, "%lf %lf %lf %lf\n", box.x, box.y, box.width, box.height); + fclose(fp); + save_labelled_cnt(cnt); } - fprintf(fp, "%lf %lf %lf %lf\n", box.x, box.y, box.width, box.height); - fclose(fp); - save_labelled_cnt(cnt); } diff --git a/others/src/options/options.cpp b/others/src/options/options.cpp index bd92120..036acb4 100644 --- a/others/src/options/options.cpp +++ b/others/src/options/options.cpp @@ -6,6 +6,7 @@ #include #include +#ifndef FIX_OPTIONS bool show_armor_box = false; bool show_armor_boxes = false; bool show_light_blobs = false; @@ -66,3 +67,6 @@ void process_options(int argc, char *argv[]){ } } } +#else +void process_options(int argc, char *argv[]){}; +#endif /* FIX_OPTIONS */