diff --git a/bob/pad/face/preprocessor/PPGSecure.py b/bob/pad/face/preprocessor/PPGSecure.py index 36b201d1554368f9911a27f96776d88a067015b0..16bc794666648d23bf45fb9ea4e1e302ecc32016 100644 --- a/bob/pad/face/preprocessor/PPGSecure.py +++ b/bob/pad/face/preprocessor/PPGSecure.py @@ -92,30 +92,45 @@ class PPGSecure(Preprocessor): pyplot.show() # detect landmarks - try: - ldms = self.detector(frame) - except TypeError: - # looks like one video from replay mobile is upside down ! + ldms = self.detector(frame) + + if ldms is None: + logger.warning("Landmarks not detected ...") + + # looks like some videos from replay mobile are upside down ! rotated_shape = bob.ip.base.rotated_output_shape(frame, 180) frame_rotated = numpy.ndarray(rotated_shape, dtype=numpy.float64) from bob.ip.base import rotate bob.ip.base.rotate(frame, frame_rotated, 180) frame_rotated = frame_rotated.astype(numpy.uint8) - logger.warning("Rotating again ...") - try: - ldms = self.detector(frame_rotated) - except TypeError: + logger.warning("Rotating 180 degrees ...") + + # check the rotated frame + if self.debug: + from matplotlib import pyplot + pyplot.imshow(numpy.rollaxis(numpy.rollaxis(frame_rotated, 2),2)) + pyplot.show() + + ldms = self.detector(frame_rotated) + # if landmarks are still not detected, do nothing + if ldms is None: ldms = previous_ldms # so do nothing ... logger.warning("No mask detected in frame {}".format(i)) - green_mean[i, :] = 0 + green_mean[i] = [0, 0, 0, 0, 0] continue + frame = frame_rotated - - # landmarks have not been detected: use the one from previous frame + + # if landmarks are still not detected, use the one from previous frame (if any) if ldms is None: - ldms = previous_ldms - logger.warning("Frame {}: no landmarks detected, using the ones from previous frame".format(i)) + if previous_ldms is None: + logger.warning("No mask detected in frame {}".format(i)) + green_mean[i] = [0, 0, 0, 0, 0] + continue + else: + ldms = previous_ldms + logger.warning("Frame {}: no landmarks detected, using the ones from previous frame".format(i)) if self.debug: from matplotlib import pyplot