From: ozzloy Date: Sun, 7 Mar 2010 22:05:58 +0000 (-0800) Subject: add verbosity flag on cli. Closes #10 X-Git-Url: http://challenge-bot.com/repos/?p=ozzloy%40gmail.com%2Foble;a=commitdiff_plain;h=2b11aff436b08a0e27ece2aa06966fccc81c958a add verbosity flag on cli. Closes #10 --- diff --git a/oble.cpp b/oble.cpp index d949cd5..fcba87c 100644 --- a/oble.cpp +++ b/oble.cpp @@ -46,12 +46,11 @@ using namespace std; static string cascade_filename = ""; +static int verbose = 0; // argument for cvFlip(src, dest, FLIP_TYPE) #define MIRROR 1 -#define DEBUG 0 - CvHaarClassifierCascade* load_object_detector(const char* cascade_path) { return (CvHaarClassifierCascade*)cvLoad(cascade_path); @@ -84,13 +83,13 @@ void detect_and_draw_objects(IplImage* image, if(0 < faces->total) { t_current = time(NULL); - if(DEBUG) + if(verbose) { printf(":) face \n"); } if(saw_last_time) { - if(DEBUG)printf("\t\tpoking\n"); + if(verbose)printf("\t\tpoking\n"); reset_idle_time(); system("gnome-screensaver-command --poke"); } @@ -99,7 +98,7 @@ void detect_and_draw_objects(IplImage* image, else { saw_last_time = 0; - if(DEBUG) + if(verbose) { printf(":( no face \n"); } @@ -130,7 +129,7 @@ void screensave(time_t t_current) if(elapse > timeout && elapse != last_elapse) { last_elapse = elapse; - if(DEBUG) + if(verbose) { printf("elapse = %d\n", elapse); } @@ -152,33 +151,46 @@ void screensave(time_t t_current) int parse_opts(int argc, char **argv) { int index, c; - //int opterr=0, optopt=0, optind=0; - //char *optarg; - // int getopt(int argc, char **argv, const char *options); opterr = 0; - const char *options = "c:"; + const char *options = "vc:"; while((c = getopt(argc, argv, options)) != -1) + { switch(c) { - case 'c': - cascade_filename = string(optarg); - printf("option c, argument = %s\n", optarg); + case 'v': verbose = 1; break; + case 'c': cascade_filename = string(optarg); break; case '?': if(optopt == 'c') + { printf("option -%c requires an argument.\n", optopt); + } else if(isprint (optopt)) + { printf("unknown option `-%c'.\n", optopt); + } else + { printf("unknown option char `\\x%x'.\n", optopt); - goto known_args_processed; - default: - abort(); + } + break; + default: abort(); } -known_args_processed: + } for(index = optind; index < argc; index++) printf("Non-option arg %s\n", argv[index]); + if(cascade_filename == "") + { + printf("you must supply a filename with -c option. example:\n"); + printf( + "%s -c %s\n", + argv[0], + "/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml" + ); + return 1; + } + if(verbose) printf("SILENT ALARM ACTIVATED!!!\n"); return 0; } @@ -187,7 +199,6 @@ int main(int argc, char** argv) { if(parse_opts(argc, argv)) return 0; - if(cascade_filename == "") cascade_filename = string(argv[1]); CvHaarClassifierCascade* cascade = load_object_detector(cascade_filename.c_str());