Assignment 3: Determine bounding boxes
DATE DUE: March 2, 2016
Points possible: 10 points
CS-161: Software Project
Instructor: Rob Bruce

OVERVIEW

For this assignment, you will use Haar cascades available in the OpenCV library to create a simple face detection system. Your program should be able to detect a whole face, the left and right eyes, nose, and mouth.

SPECIFICATIONS

1. Your program should accept command line input through argc and argv. Your program will thus use argv to pass in a non-negative integer (video ID) which represents the unique identifer of an input video.

2. Your program will then query Postgres for the following metadata associated with the input video ID:

  • Number of frames
  • Width (pixels) of each frame (in pixels)
  • Height (pixels) of each frame (in pixels)

3. For each frame associated with the video ID in the image repository do the following:

  • Use OpenCV to open the current frame.
  • Use Haar cascades to search for a face in the image.
  • If a face is detected, use Haar cascades to search for the location of the left eye.
  • If a face is detected, use Haar cascades to search for the location of the right eye.
  • If a face is detected, use Haar cascades to search for the location of the nose.
  • If a face is detected, use Haar cascades to search for the location of the mouth.
  • If a face is detected, the Cartesian coordinates (x, y) and (width, height) for a bounding box enclosing the face will be returned. Store these values along with the video ID and current frame in Postgres.
  • If a left eye is detected, the Cartesian coordinates (x, y) and (width, height) for a bounding box enclosing the left eye will be returned. Store these values along with the video ID and current frame in Postgres.
  • If a right eye is detected, the Cartesian coordinates (x, y) and (width, height) for a bounding box enclosing the right eye will be returned. Store these values along with the video ID and current frame in Postgres.
  • If a nose is detected, the Cartesian coordinates (x, y) and (width, height) for a bounding box enclosing the nose will be returned. Store these values along with the video ID and current frame in Postgres.
  • If a mouth is detected, the Cartesian coordinates (x, y) and (width, height) for a bounding box enclosing the mouth will be returned. Store these values along with the video ID and current frame in Postgres.

SUBMITTING YOUR PROGRAM

1. Please submit your program as a text file to the Canvas dropbox. I only need the source code. I will build the program myself.

2. Please name your program using the following naming convention:

Lastname_Firstname_assignment_3.c (for C programs)

Lastname_Firstname_assignment_3.cpp (for C++ programs)

Lastname_Firstname_assignment_3.java (for Java programs)

Lastname_Firstname_assignment_3.pl (for Perl programs)

Lastname_Firstname_assignment_3.py (for Python programs)

Lastname_Firstname_assignment_3.sh (for BASH programs)

Lastname_Firstname_assignment_3.csh (for csh programs)

For example, my name is Rob Bruce. If I write my program in the C programming language, my assignment 3 should be named: Bruce_Rob_assignment_3.c

3. Please include your name as a comment at the beginning of your program like this:

/* Rob Bruce */

or this:

// Rob Bruce

4. I usually do not need a makefile to build your programs, regardless of language; however, in the unlikely event that I cannot build your project, I will send an email inquiry as appropriate.

5. I expect your program to build without syntax errors.

6. I expect your program to execute without run-time errors.

GRADING

Points will be deducted for any program that does not meet the specification as outlined above.

LATE ASSIGNMENTS

Assignments submitted after the due date will be worth, at most, 5 points. Additional points will be deducted for programs not meeting the specification as outlined above.