                  if item == "EOF":
                      self.queues["in"].put(item)
                      break
  
                  filename, image = item
                  detect_image = self.compile_detection_image(image, False, False)
  
                  for angle in self.rotation:
                      current_image, rotmat = self.rotate_image(detect_image, angle)
                      faces, points = detect_face(current_image, **self.kwargs)
                      if self.verbose and angle != 0 and faces.any():
                          print("found face(s) by rotating image {} degrees".format(
                              angle))
                      if faces.any():
                          break
  
                  detected_faces = self.process_output(faces, points, rotmat)
                  retval = {
                      "filename": filename,
                      "image": image,
                      "detected_faces": detected_faces}
                  self.finalize(retval)
          except:
              retval = {"exception": True}
              self.queues["out"].put(retval)
              raise
  
      def process_output(self, faces, points, rotation_matrix):
          """ Compile found faces for output """
          faces = self.recalculate_bounding_box(faces, points)
          faces = [dlib.rectangle(  # pylint: disable=c-extension-no-member
 
</s> remove         try:
            while True:
                item = self.queues["in"].get()
                if item == "EOF":
                    self.queues["in"].put(item)
 </s> add         logger.debug("Launching Detect")
        while True:
            item = self.get_item()
            if item == "EOF":
                break
            logger.trace("Detecting faces: '%s'", item["filename"])
            detect_image = self.compile_detection_image(item["image"], False, False)

            for angle in self.rotation:
                current_image, rotmat = self.rotate_image(detect_image, angle)
                faces, points = detect_face(current_image, **self.kwargs)
                if angle != 0 and faces.any():
                    logger.verbose("found face(s) by rotating image %s degrees", angle)
                if faces.any(): </s> remove                 for angle in self.rotation:
                    current_image, rotmat = self.rotate_image(detect_image,
                                                              angle)
 </s> add             for angle in self.rotation:
                current_image, rotmat = self.rotate_image(detect_image, angle) </s> remove                     if faces:
                        break
 </s> add                 if faces:
                    break </s> remove                     if self.verbose and angle != 0 and faces.any():
                        print("found face(s) by rotating image {} "
                              "degrees".format(angle))
 </s> add                 if angle != 0 and faces.any():
                    logger.verbose("found face(s) by rotating image %s degrees", angle) </s> remove                 detected_faces = self.process_output(faces, rotmat)
                retval = {"filename": filename,
                          "image": image,
                          "detected_faces": detected_faces}
                self.finalize(retval)
        except:
            retval = {"exception": True}
            self.queues["out"].put(retval)
            raise
 </s> add             detected_faces = self.process_output(faces, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
                  if item == "EOF":
                      self.queues["in"].put(item)
                      break
  
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
            detected_faces = self.process_output(faces, points, rotmat)
            item["detected_faces"] = detected_faces
            self.finalize(item)

        logger.debug("Thread Completed Detect")
  
      def process_output(self, faces, points, rotation_matrix):
          """ Compile found faces for output """
          faces = self.recalculate_bounding_box(faces, points)
          faces = [dlib.rectangle(  # pylint: disable=c-extension-no-member
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace 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/mtcnn.py