diff --git a/facemovie/FaceParams.py b/facemovie/FaceParams.py index 83e5dda..ffb226a 100644 --- a/facemovie/FaceParams.py +++ b/facemovie/FaceParams.py @@ -16,7 +16,7 @@ class FaceParams(object): ''' # Creates dictionary for all types of training files # some of them shall never be used. Perhaps would it be good to lower the dict size, or hide some of them - training_types = {#eyes + self.training_types = {#eyes 'eyes':"haarcascade_eye", 'glasses':"haarcascade_eye_tree_eyeglasses", 'left eye splits':"haarcascade_lefteye_2splits", @@ -45,7 +45,7 @@ class FaceParams(object): 'nose':"haarcascade_mcs_nose" } # postpend .xml - cascade_name = training_types[training_type] + ".xml" + cascade_name = self.training_types[training_type] + ".xml" # Setting up some default parameters for Face Detection self.face_cascade = cv.Load(os.path.join(xml_folder, cascade_name)) @@ -68,4 +68,14 @@ class FaceParams(object): print "Haar scaling: %f" % (self.haar_scale) print "Number of Haar flags: %d" % (self.haar_flags) print "Minimum number of neighbors: %d" % (self.min_neighbors) - print "---------" \ No newline at end of file + print "---------" + + def get_types(self): + """ + Lists all possible types for training files + Returns list of string + """ + types = [] + for key, val in self.training_types.iteritems(): + types.append(key) + return types \ No newline at end of file diff --git a/facemovie/facemovie.py b/facemovie/Facemovie.py similarity index 99% rename from facemovie/facemovie.py rename to facemovie/Facemovie.py index 1f78143..e37b8d5 100644 --- a/facemovie/facemovie.py +++ b/facemovie/Facemovie.py @@ -3,8 +3,11 @@ Created on 27 mars 2012 @author: jll ''' -import cv import os +import sys + +import cv + import Guy from FaceParams import FaceParams diff --git a/facemovie/fm_user_end.py b/facemovie/fm_user_end.py new file mode 100644 index 0000000..a6e512e --- /dev/null +++ b/facemovie/fm_user_end.py @@ -0,0 +1,65 @@ +''' +Created on 29 mars 2012 + +@author: jll +''' + +# This file should never be imported anywhere +import os +import sys +import argparse + +import Facemovie + +class Facemoviefier(): + """ + Class defining the interactions with the end user. + Should be used as point of entry for all end users. + """ + + def __init__(self): + + #inits Command Line Parser + self.parser = initCLParser() + + + # Finally def ines the FaceMovie itself + self.Facemovie = Facemovie.FaceMovie(in_fo, out_fo, par_fo) + + def initCLParser(self): + """ + Inits and Configures the command line parser designed to help the user configure the application + """ + parser = argparse.ArgumentParser(description="Creates a movie from a bunch of photos containing a Face.") + + return parser + + + +if __name__ == '__main__': + print sys.argv + #We need input_folder, output_folder, param_folder for now + if len(sys.argv) == 4: + print "I trust your inputs!" + [in_fo, out_fo, par_fo] = sys.argv[1, :] + else : + print "Chosen automatic way!" + root_fo = "C:\Users\jll\perso\workspace\FaceMovie" + in_fo = os.path.join(root_fo, "data/input\Axel") + out_fo = os.path.join(root_fo, "data/output") + par_fo = os.path.join(root_fo, "facemovie/haarcascades") + + my_movie = Facemovie.FaceMovie(in_fo, out_fo, par_fo) + my_movie.list_guys() # find images in input folder + my_movie.search_faces() # search for images with faces + # I want to change images so that all faces have the same size + my_movie.normalize_faces() # sets all faces to the same size + # I want to know the size of the output frame, knowing initial conditions + my_movie.find_out_dims() # finds output minimal size to get all eyes in the same place + + #choose your final step + #my_movie.show_faces(1000) + #my_movie.save_faces("output") + my_movie.save_movie("output") + + print "Facemovie finished !" \ No newline at end of file diff --git a/facemovie/main_file.py b/facemovie/main_file.py deleted file mode 100644 index 3923163..0000000 --- a/facemovie/main_file.py +++ /dev/null @@ -1,41 +0,0 @@ -''' -Created on 29 mars 2012 - -@author: jll -''' -import os -import facemovie - -import sys -if __name__ == '__main__': - print sys.argv - #We need input_folder, output_folder, param_folder for now - if len(sys.argv) == 1: - print "Setting up the parameters!" - in_fo = raw_input("indicate input folder:") - out_fo = raw_input("indicate output folder:") - par_fo = raw_input("indicate parameters folder:") - elif len(sys.argv) == 4: - print "I trust your inputs!" - [in_fo, out_fo, par_fo] = sys.argv[1, :] - else : - print "Chosen automatic way!" - root_fo = "C:\Users\jll\perso\workspace\FaceMovie" - in_fo = os.path.join(root_fo, "input\Axel") - out_fo = os.path.join(root_fo, "output") - par_fo = os.path.join(root_fo, "haarcascades") - - my_movie = facemovie.FaceMovie(in_fo, out_fo, par_fo) - my_movie.list_guys() # find images in input folder - my_movie.search_faces() # search for images with faces - # I want to change images so that all faces have the same size - my_movie.normalize_faces() # sets all faces to the same size - # I want to know the size of the output frame, knowing initial conditions - my_movie.find_out_dims() # finds output minimal size to get all eyes in the same place - - #choose your final step - #my_movie.show_faces(1000) - #my_movie.save_faces("output") - my_movie.save_movie("output") - - print "Facemovie finished !" \ No newline at end of file diff --git a/test/test_script.py b/test/test_script.py index 80c123d..f825e14 100644 --- a/test/test_script.py +++ b/test/test_script.py @@ -6,7 +6,7 @@ Created on 16 avr. 2012 import os from context import facemovie -from facemovie.facemovie import FaceMovie +from facemovie.Facemovie import FaceMovie if __name__ == '__main__': root_fo = "C:\Users\jll\perso\workspace\FaceMovie" @@ -16,15 +16,19 @@ if __name__ == '__main__': my_movie = FaceMovie(in_fo, out_fo, par_fo) my_movie.list_guys() # find images in input folder - my_movie.search_faces() # search for images with faces + + # listing training files + print my_movie.face_params.get_types() + + #my_movie.search_faces() # search for images with faces # I want to change images so that all faces have the same size - my_movie.normalize_faces() # sets all faces to the same size + #my_movie.normalize_faces() # sets all faces to the same size # I want to know the size of the output frame, knowing initial conditions - my_movie.find_out_dims() # finds output minimal size to get all eyes in the same place + #my_movie.find_out_dims() # finds output minimal size to get all eyes in the same place #choose your final step #my_movie.show_faces(1000) #my_movie.save_faces("output") - my_movie.save_movie("output") + #my_movie.save_movie("output") print "Facemovie finished !" \ No newline at end of file