Ejemplo n.º 1
0
 def process(self):
     extractor_name = "Align"  # TODO Pass as argument
     self.extractor = PluginLoader.get_extractor(extractor_name)()
     processes = self.arguments.processes
     try:
         if processes != 1:
             files = list(self.read_directory())
             for filename, faces in tqdm(pool_process(self.processFiles,
                                                      files,
                                                      processes=processes),
                                         total=len(files)):
                 self.num_faces_detected += 1
                 self.faces_detected[os.path.basename(filename)] = faces
         else:
             try:
                 for filename in tqdm(self.read_directory()):
                     image = cv2.imread(filename)
                     self.faces_detected[os.path.basename(
                         filename)] = self.handleImage(image, filename)
             except Exception as e:
                 print(
                     'Failed to extract from image: {}. Reason: {}'.format(
                         filename, e))
     finally:
         self.write_alignments()
Ejemplo n.º 2
0
    def load_extractor():
        """ Load the requested extractor for extraction """
        # TODO Pass as argument
        extractor_name = "Align"
        extractor = PluginLoader.get_extractor(extractor_name)()

        return extractor
Ejemplo n.º 3
0
    def __init__(self, frames, alignments, size=256,
                 padding=48, align_eyes=False):
        self.size = size
        self.padding = padding
        self.align_eyes = align_eyes
        self.extractor = PluginLoader.get_extractor("Align")()
        self.alignments = alignments
        self.frames = frames

        self.current_frame = None
        self.faces = list()
        self.matrices = list()
Ejemplo n.º 4
0
    def process(self):
        extractor_name = "Align" # TODO Pass as argument
        extractor = PluginLoader.get_extractor(extractor_name)()

        try:
            for filename in self.read_directory():
                image = cv2.imread(filename)
                for idx, face in self.get_faces(image):
                    resized_image = extractor.extract(image, face, 256)
                    output_file = self.output_dir / Path(filename).stem
                    cv2.imwrite(str(output_file) + str(idx) + Path(filename).suffix, resized_image)
                
        except Exception as e:
            print('Failed to extract from image: {}. Reason: {}'.format(filename, e))
Ejemplo n.º 5
0
    def process(self):
        extractor_name = "Align" # TODO Pass as argument
        self.extractor = PluginLoader.get_extractor(extractor_name)()
        self.faces_detected = 0
        processes = self.arguments.processes
        if processes != 1:
            files = list(self.read_directory())
            for _ in tqdm(pool_process(self.processFiles, files, processes=processes), total = len(files)):
                self.faces_detected +=1
        else:
            try:
                for filename in tqdm(self.read_directory()):
                    self.handleImage(filename)

            except Exception as e:
                print('Failed to extract from image: {}. Reason: {}'.format(filename, e))
Ejemplo n.º 6
0
    def process(self):
        extractor_name = "Align"  # TODO Pass as argument
        extractor = PluginLoader.get_extractor(extractor_name)()

        try:
            for filename in self.read_directory():
                image = cv2.imread(filename)
                for idx, face in self.get_faces(image):
                    resized_image = extractor.extract(image, face, 256)
                    output_file = self.output_dir / Path(filename).stem
                    cv2.imwrite(
                        str(output_file) + str(idx) + Path(filename).suffix,
                        resized_image)

        except Exception as e:
            print('Failed to extract from image: {}. Reason: {}'.format(
                filename, e))
Ejemplo n.º 7
0
    def process_image(self, filename):
        extractor = PluginLoader.get_extractor("Align")()

        try:
            image = cv2.imread(filename)
            for (idx, face) in enumerate(detect_faces(image)):
                if idx > 0 and self.arguments.verbose:
                    print('- Found more than one face!')
                    self.verify_output = True

                resized_image = extractor.extract(image, face, 256)
                output_file = self.output_dir / Path(filename).stem
                cv2.imwrite(
                    str(output_file) + str(idx) + Path(filename).suffix,
                    resized_image)
                self.faces_detected = self.faces_detected + 1
        except Exception as e:
            print('Failed to extract from image: {}. Reason: {}'.format(
                filename, e))
Ejemplo n.º 8
0
 def process(self):
     extractor_name = "Align" # TODO Pass as argument
     self.extractor = PluginLoader.get_extractor(extractor_name)()
     processes = self.arguments.processes
     try:
         if processes != 1:
             files = list(self.read_directory())
             for filename, faces in tqdm(pool_process(self.processFiles, files, processes=processes), total = len(files)):
                 self.num_faces_detected += 1
                 self.faces_detected[os.path.basename(filename)] = faces
         else:
             try:
                 for filename in tqdm(self.read_directory()):
                     image = cv2.imread(filename)
                     self.faces_detected[os.path.basename(filename)] = self.handleImage(image, filename)
             except Exception as e:
                 print('Failed to extract from image: {}. Reason: {}'.format(filename, e))
     finally:
         self.write_alignments()
Ejemplo n.º 9
0
def extract(input_path, output_path):
    files = os.listdir(input_path)
    if not len(files):
        raise Exception("no files inside {0}!!!".format(input_path))
    extractor = PluginLoader.get_extractor("Align")()
    for n, _file in enumerate(files):
        _file_id = os.path.join(input_path, _file)
        #print (_file_id)
        output = os.path.join(
            output_path, _file)  #"{0}.{1}".format(n, _file.split(".")[1]))
        if not os.path.exists(output):
            if os.path.isfile(_file_id):
                print("file {0}/{1}".format(n, len(files)), _file_id)
                image = cv2.imread(_file_id)
                try:
                    for (idx, face) in enumerate(detect_faces(image)):
                        resized_image = extractor.extract(image, face, 256)
                        cv2.imwrite(output, resized_image)
                except Exception as e:
                    print(
                        'Failed to extract from image: {}. Reason: {}'.format(
                            _file, e))
        else:
            print("Jump ", output)
Ejemplo n.º 10
0
 def process(self):
     """ Run extraction """
     print("\n[EXTRACT FACES]")  # Tidy up cli output
     self.check_folder()
     self.extractor = PluginLoader.get_extractor("Align")()
     self.export_faces()
Ejemplo n.º 11
0
    def load_extractor(extractor_name="Align"):
        """ Load the requested extractor for extraction """
        extractor = PluginLoader.get_extractor(extractor_name)()

        return extractor
Ejemplo n.º 12
0
    def load_extractor(extractor_name="Align"):
        """ Load the requested extractor for extraction """
        extractor = PluginLoader.get_extractor(extractor_name)()

        return extractor