          logger.debug("Load iterator: %s", iterator)
          for retval in iterator():
              filename, image = retval[:2]
              if image is None or (not image.any() and image.ndim not in (2, 3)):
                  # All black frames will return not np.any() so check dims too
                  logger.warning("Unable to open image. Skipping: '%s'", filename)
                  continue
              logger.trace("Putting to queue: %s", [v.shape if isinstance(v, np.ndarray) else v
                                                    for v in retval])
              queue.put(retval)
 
</s> remove         if self._thread is not None:
 </s> add         logger.debug("Setting thread")
        if self._thread is not None and self._thread.is_alive():
            logger.debug("Thread pre-exists and is alive: %s", self._thread) </s> remove         logger.trace(self._thread)
 </s> add         logger.debug("Set thread: %s", self._thread)
                # All black frames will return not numpy.any() so check dims too
          logger.debug("Load iterator: %s", iterator)
          for retval in iterator():
              filename, image = retval[:2]
              if image is None or (not image.any() and image.ndim not in (2, 3)):
                # All black frames will return not numpy.any() so check dims too
                  logger.warning("Unable to open image. Skipping: '%s'", filename)
                  continue
              logger.trace("Putting to queue: %s", [v.shape if isinstance(v, np.ndarray) else v
                                                    for v in retval])
              queue.put(retval)
keep keep keep keep replace keep keep keep keep keep
 Bugfix: Extract - Fix serial processing 
lib/image.py