  
                  if angle != 0 and self.args.verbose:
                      print("found face(s) by rotating image "
                            "{} degrees".format(angle))
                  if process_faces:
                      break
  
              final_faces = [self.process_single_face(idx,
                                                      face,
                                                      filename,
 
</s> remove                 process_faces = [(idx, face) for idx, face in faces]
                if process_faces and angle != 0 and self.args.verbose:
 </s> add                 process_faces = [[idx, face] for idx, face in faces]
                if not process_faces:
                    continue

                if angle != 0 and self.args.verbose: </s> remove                 currentimage = Utils.rotate_image_by_angle(image, angle)
 </s> add                 currentimage, rotation_matrix = rotate_image_by_angle(image,
                                                                      angle) </s> remove                                                     currentimage)
 </s> add                                                     image) </s> remove                 image = Utils.rotate_image_by_angle(image, face.r)
 </s> add                 image, _ = rotate_image_by_angle(image, face.r)
                if angle != 0:
                    process_faces = [[idx,
                                      rotate_landmarks(face, rotation_matrix)]
                                     for idx, face in process_faces]

  
                  if angle != 0 and self.args.verbose:
                      print("found face(s) by rotating image "
                            "{} degrees".format(angle))
                if angle != 0:
                    process_faces = [[idx,
                                      rotate_landmarks(face, rotation_matrix)]
                                     for idx, face in process_faces]

                  if process_faces:
                      break
  
              final_faces = [self.process_single_face(idx,
                                                      face,
                                                      filename,
keep keep keep add keep keep keep keep keep keep
 Alignments Tool - Manual (#503)

* Initial alignment tool implementation

* Add face processing. Fix helptext formatting for cli and gui

* Extract faces from alignments file

* Add draw landmarks

* fix analysis hours past 24 bug

* Remove tools flag. Enlarge GUI tooltips

* Add filename extension check for image folders

* Fix folder nonetype bug and linting

* Bugfix renaming of faces

* Import alignments from DeepFaceLab

* Remove frames requirement for dfl

* Alignments Tool: Add remove frames

* Alignments: Add remove frames (#492)

* Alignments Tool: Add remove frames

* Implement Frame display for manual extract

* Alignments refactor

* Further navigation improvements

* Further navigation improvements

* Alignment Tool: Refactor

* Move rotate_image_by_angle() to utils

* Further refactoring improvements

* Reduce key bindings. Add skip to has faces, Add resize frame binding

* More navigation options. Delete faces added. Save alignments added

* Add: Reload alignments. Add extra api calls. Better redraw handling.

* Manual Alignments - Alpha Build

* Rotate landmarks for rotated images

* Rebase to remove OriginalHiRes changes 
scripts/extract.py