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);
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");
}
else
{
saw_last_time = 0;
- if(DEBUG)
+ if(verbose)
{
printf(":( no face \n");
}
if(elapse > timeout && elapse != last_elapse)
{
last_elapse = elapse;
- if(DEBUG)
+ if(verbose)
{
printf("elapse = %d\n", elapse);
}
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;
}
{
if(parse_opts(argc, argv)) return 0;
- if(cascade_filename == "") cascade_filename = string(argv[1]);
CvHaarClassifierCascade* cascade =
load_object_detector(cascade_filename.c_str());