mirror of
https://github.com/jlengrand/Ivolution.git
synced 2026-03-10 15:50:41 +00:00
Data are now hosted as a subfolder of the code, and all the source files are grouped into the same package. Bin folder has been removed, scripts are now directly placed in the root location. Main package has been renamed to ivolution, this is a first step towards github renaming and full renaming of the project
105 lines
4.5 KiB
Python
105 lines
4.5 KiB
Python
"""
|
|
.. module:: FaceParams
|
|
:platform: Unix, Windows
|
|
:synopsis: Simple class used to store parameters used for Face detection.
|
|
|
|
.. moduleauthor:: Julien Lengrand-Lambert <jlengrand@gmail.com>
|
|
|
|
"""
|
|
import cv
|
|
import os
|
|
|
|
import logging
|
|
|
|
import training_types
|
|
|
|
class FaceParams(object):
|
|
'''
|
|
Simple class used to store parameters used for Face detection
|
|
'''
|
|
def __init__(self, xml_folder, input_folder, output_folder, training_type="frontal_face", sort="name", mode="conservative",speed=1):
|
|
"""
|
|
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
|
|
postpend .xml
|
|
|
|
:param xml_folder: the location where xml files are located
|
|
:type xml_folder: string
|
|
:param training_type: the type of profile we are going to use
|
|
:type training_type: string
|
|
|
|
:param input_folder: the location where images are located
|
|
:type input_folder: string
|
|
:param output_folder: the location where the video will be saved
|
|
:type output_folder: string
|
|
:param speed: the time delay between frames in the video
|
|
:type speed: int
|
|
:param mode: the creation mode of the video. Defines whether images are cropped, or black borders are added.
|
|
:type mode: string
|
|
:param sort: the method used to sort images chronologically
|
|
:type sort: string
|
|
"""
|
|
|
|
self.input_folder = input_folder
|
|
self.output_folder = output_folder
|
|
self.speed = 1 # between 0 and 2
|
|
self.mode = mode # conservative or crop
|
|
self.sort = sort # name or exif
|
|
|
|
cascade_name = training_types.simple_set[training_type] + ".xml"
|
|
# Setting up some default parameters for Face Detection
|
|
self.face_cascade = cv.Load(os.path.join(xml_folder, cascade_name))
|
|
|
|
# To be defined more precisely
|
|
self.min_size = (20,20)
|
|
self.image_scale = 2 # Image scaling chosen for classification (2)
|
|
self.haar_scale = 1.2 # Haar scaling chosen for classification (1.2)
|
|
self.min_neighbors = 2 # the Minimum number of neighbors to be defined (2)
|
|
self.haar_flags = 0 # the chosen number of haar flags (0)
|
|
|
|
self.log()
|
|
|
|
def __str__(self):
|
|
"""
|
|
More convenient print method
|
|
"""
|
|
print "---------"
|
|
print "Selected parameters for your Facemovie:"
|
|
print "Input Folder: %s" % (self.input_folder)
|
|
print "Output Folder: %s" % (self.output_folder)
|
|
print "Speed for movie: %s" % (["slow", "medium", "fast"][self.speed])
|
|
print "Video Mode: %s" % (self.mode)
|
|
print "Files sorting method: %s" % (self.sort)
|
|
print "-----"
|
|
print "Selected parameters for Face Detection:"
|
|
print "Selected cascade for Face detection : %s" % ("haarcascade_frontalface_alt")
|
|
print "Minimum Size (x, y): %d, %d" % (self.min_size[0], self.min_size[1])
|
|
print "Image scaling: %d)" % (self.image_scale)
|
|
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 "---------"
|
|
|
|
def log(self):
|
|
"""
|
|
Log configuration
|
|
"""
|
|
my_logger = logging.getLogger('FileLog')
|
|
params_str = "---------"
|
|
params_str += "Selected parameters for your Facemovie:"
|
|
params_str += "Input Folder: %s" % (self.input_folder)
|
|
params_str += "Output Folder: %s" % (self.output_folder)
|
|
params_str += "Speed for movie: %s" % (["slow", "medium", "fast"][self.speed])
|
|
params_str += "Video Mode: %s" % (self.mode)
|
|
params_str += "Files sorting method: %s" % (self.sort)
|
|
params_str += "-----"
|
|
params_str += "Selected parameters for Face Detection:"
|
|
params_str += "Selected cascade for Face detection : %s" % ("haarcascade_frontalface_alt")
|
|
params_str += "Minimum Size (x, y): %d, %d" % (self.min_size[0], self.min_size[1])
|
|
params_str += "Image scaling: %d)" % (self.image_scale)
|
|
params_str += "Haar scaling: %f" % (self.haar_scale)
|
|
params_str += "Number of Haar flags: %d" % (self.haar_flags)
|
|
params_str += "Minimum number of neighbors: %d" % (self.min_neighbors)
|
|
params_str += "---------"
|
|
my_logger.debug(params_str)
|
|
|