修改option处理方式。

This commit is contained in:
xinyang
2019-08-05 09:36:37 +08:00
parent 1434cee8c0
commit 4004803ea0
2 changed files with 111 additions and 61 deletions

View File

@@ -5,7 +5,11 @@
#ifndef _OPTIONS_H_ #ifndef _OPTIONS_H_
#define _OPTIONS_H_ #define _OPTIONS_H_
#define PROJECT_DIR PATH #ifdef PATH
#define PROJECT_DIR PATH
#else
#define PROJECT_DIR ""
#endif
extern bool show_armor_box; extern bool show_armor_box;
extern bool show_armor_boxes; extern bool show_armor_boxes;

View File

@@ -5,6 +5,7 @@
#include <options.h> #include <options.h>
#include <log.h> #include <log.h>
#include <cstring> #include <cstring>
#include <map>
bool show_armor_box = false; bool show_armor_box = false;
bool show_armor_boxes = false; bool show_armor_boxes = false;
@@ -19,30 +20,90 @@ bool show_energy = false;
bool save_mark = false; bool save_mark = false;
bool show_info = false; bool show_info = false;
void process_options(int argc, char *argv[]) { // 使用map保存所有选项及其描述和操作加快查找速度。
if (argc >= 2) { std::map<std::string, std::pair<std::string, void(*)(void)>> options = {
for (int i = 1; i < argc; i++) { {"--help",{
if (strcmp(argv[i], "--help") == 0) { "show the help information.", [](){
LOGM("--show-armor-box: show the aim box."); LOG(LOG_MSG, "<HELP>: " STR_CTR(WORD_BLUE, "All options below are for debug use."));
LOGM("--show-armor-boxes: show the candidate aim boxes."); for(const auto &option : options){
LOGM("--show-light-blobs: show the candidate light blobs."); LOG(LOG_MSG, "<HELP>: " STR_CTR(WORD_GREEN, "%s: %s"), option.first.data(), option.second.first.data());
LOGM("--show-origin: show the origin image."); }
LOGM("--run-with-camera: start the program with camera directly without asking."); }
LOGM("--save-video: save the video."); }},
LOGM("--save-labelled-boxes: save labelled armor boxes."); {"--show-armor-box", {
} else if (strcmp(argv[i], "--show-armor-box") == 0) { "show the aim box.", []() {
show_armor_box = true; show_armor_box = true;
LOGM("Enable show armor box"); LOGM("Enable show armor box");
} else if (strcmp(argv[i], "--show-armor-boxes") == 0) { }
}},
{"--show-armor-boxes",{
"show the candidate aim boxes.", [](){
show_armor_boxes = true; show_armor_boxes = true;
LOGM("Enable show armor boxes"); LOGM("Enable show armor boxes");
} else if (strcmp(argv[i], "--show-light-blobs") == 0) { }
}},
{"--show-light-blobs",{
"show the candidate light blobs.", [](){
show_light_blobs = true; show_light_blobs = true;
LOGM("Enable show light blobs"); LOGM("Enable show light blobs");
} else if (strcmp(argv[i], "--show-origin") == 0) { }
}},
{"--show-origin", {
"show the origin image.", [](){
show_origin = true; show_origin = true;
LOGM("Enable show origin"); LOGM("Enable show origin");
} else if (strcmp(argv[i], "--show-all") == 0) { }
}},
{"--run-with-camera", {
"start the program with camera directly without asking.", []() {
run_with_camera = true;
LOGM("Run with camera!");
}
}},
{"--save-video", {
"save the video.", [](){
save_video = true;
LOGM("Enable save video!");
}
}},
{"--save-labelled-boxes",{
"save the candidate boxes with their id labels.", [](){
save_labelled_boxes = true;
LOGM("labelled armor boxes will be saved!");
}
}},
{"--wait-uart", {
"wait uart until ready before running.", [](){
wait_uart = true;
LOGM("Enable wait uart!");
}
}},
{"--show-process", {
"", [](){
show_process = true;
LOGM("Enable show processed image!");
}
}},
{"--show-energy", {
"",[](){
show_energy = true;
LOGM("Enable show energy part!");
}
}},
{"--save-mark", {
"", [](){
save_mark = true;
LOGM("Write down mark");
}
}},
{"--show-info", {
"", [](){
show_info = true;
LOGM("Show information!");
}
}},
{"--show-all", {
"show all image windows.", [](){
show_armor_box = true; show_armor_box = true;
LOGM("Enable show armor box"); LOGM("Enable show armor box");
show_armor_boxes = true; show_armor_boxes = true;
@@ -55,34 +116,19 @@ void process_options(int argc, char *argv[]) {
LOGM("Enable show processed image"); LOGM("Enable show processed image");
show_energy = true; show_energy = true;
LOGM("Enable show energy part"); LOGM("Enable show energy part");
} else if (strcmp(argv[i], "--run-with-camera") == 0) { }
run_with_camera = true; }}
LOGM("Run with camera!"); };
} else if (strcmp(argv[i], "--save-video") == 0) {
save_video = true; void process_options(int argc, char *argv[]) {
LOGM("Save video!"); if (argc >= 2) {
} else if (strcmp(argv[i], "--wait-uart") == 0) { for (int i = 1; i < argc; i++) {
wait_uart = true; auto key = options.find(std::string(argv[i])); // 寻找对应选项。
LOGM("Wait uart until available!"); if(key != options.end()){
} else if (strcmp(argv[i], "--save-labelled-boxes") == 0) { key->second.second();
save_labelled_boxes = true; }else{
LOGM("labelled armor boxes will be saved!");
} else if (strcmp(argv[i], "--show-process") == 0) {
show_process = true;
LOGM("Enable show processed image!");
} else if (strcmp(argv[i], "--show-energy") == 0) {
show_energy = true;
LOGM("Enable show energy part!");
} else if (strcmp(argv[i], "--save-mark") == 0) {
save_mark = true;
LOGM("Write down mark");
} else if (strcmp(argv[i], "--show-info") == 0) {
show_info = true;
LOGM("Show information!");
} else {
LOGW("Unknown option: %s. Use --help to see options.", argv[i]); LOGW("Unknown option: %s. Use --help to see options.", argv[i]);
} }
} }
} }
} }