In the middle of adding command line support

This commit is contained in:
julien Lengrand-Lambert
2012-04-25 08:42:03 +02:00
parent 5cfde7dff3
commit 4ab8d52d0e
5 changed files with 91 additions and 50 deletions

View File

@@ -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 "---------"
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

View File

@@ -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

65
facemovie/fm_user_end.py Normal file
View File

@@ -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 !"

View File

@@ -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 !"

View File

@@ -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 !"