          height, width = image.shape[:2]
          interpln = cv2.INTER_LINEAR if self.scale > 1.0 else cv2.INTER_AREA
          dims = (int(width * self.scale), int(height * self.scale))
  
          if self.verbose and self.scale < 1.0:
              print("Resizing image from {}x{} to {}.".format(
                  str(width), str(height), "x".join(str(i) for i in dims)))
  
          image = cv2.resize(image, dims, interpolation=interpln)
          return image
  
      # <<< IMAGE ROTATION METHODS >>> #
 
</s> remove             print("Error initializing FAN. Trying Dlib")
 </s> add             logger.error("Error initializing FAN. Trying Dlib") </s> remove         # See lib.multithreading.QueueManager for getting queues
 </s> add         # See lib.queue_manager.QueueManager for getting queues </s> remove         detected = [dlib.rectangle(int(face.left() / self.scale),
                                   int(face.top() / self.scale),
                                   int(face.right() / self.scale),
                                   int(face.bottom() / self.scale))
 </s> add         detected = [dlib.rectangle(  # pylint: disable=c-extension-no-member
            int(face.left() / self.scale), int(face.top() / self.scale),
            int(face.right() / self.scale), int(face.bottom() / self.scale)) </s> remove         cv2.warpAffine( new_face, mat, image_size, new_image, cv2.WARP_INVERSE_MAP | cv2.INTER_CUBIC, cv2.BORDER_TRANSPARENT )
 </s> add         cv2.warpAffine(new_face,
                       mat,
                       image_size,
                       new_image,
                       cv2.WARP_INVERSE_MAP | cv2.INTER_CUBIC,
                       cv2.BORDER_TRANSPARENT)

        if self.scale < 1.0:
            logger.verbose("Resizing image from %sx%s to %s.",
                           width, height, "x".join(str(i) for i in dims))
          height, width = image.shape[:2]
          interpln = cv2.INTER_LINEAR if self.scale > 1.0 else cv2.INTER_AREA
          dims = (int(width * self.scale), int(height * self.scale))
  
        if self.scale < 1.0:
            logger.verbose("Resizing image from %sx%s to %s.",
                           width, height, "x".join(str(i) for i in dims))
        if self.scale < 1.0:
            logger.verbose("Resizing image from %sx%s to %s.",
                           width, height, "x".join(str(i) for i in dims))
        if self.scale < 1.0:
            logger.verbose("Resizing image from %sx%s to %s.",
                           width, height, "x".join(str(i) for i in dims))
  
          image = cv2.resize(image, dims, interpolation=interpln)
          return image
  
      # <<< IMAGE ROTATION METHODS >>> #
keep keep keep keep replace replace replace keep keep keep keep keep
 Logging (#541)

* Convert prints to logger. Further logging improvements. Tidy  up

* Fix system verbosity. Allow SystemExit

* Fix reload extract bug

* Child Traceback handling

* Safer shutdown procedure

* Add shutdown event to queue manager

* landmarks_as_xy > property. GUI notes + linting. Aligner bugfix

* fix FaceFilter. Enable nFilter when no Filter is supplied

* Fix blurry face filter

* Continue on IO error. Better error handling

* Explicitly print stack trace tocrash log

* Windows Multiprocessing bugfix

* Add git info and conda version to crash log

* Windows/Anaconda mp bugfix

* Logging fixes for training 
plugins/extract/detect/_base.py