add verbosity flag on cli. Closes #10
authorozzloy <ozzloy@zero7.(none)>
Sun, 7 Mar 2010 22:05:58 +0000 (14:05 -0800)
committerozzloy <ozzloy@zero7.(none)>
Sun, 7 Mar 2010 22:05:58 +0000 (14:05 -0800)
oble.cpp

index d949cd594d9f31df2c287b943af0281472229e09..fcba87c697cf05f7061bc12909072f40c5a94459 100644 (file)
--- a/oble.cpp
+++ b/oble.cpp
 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());