Skip to content
Snippets Groups Projects
Commit e878b159 authored by Guillaume HEUSCH's avatar Guillaume HEUSCH
Browse files

[preprocessor] fixed the exception catching when landmarks are not detected (PPGSecure)

parent a21eb531
No related branches found
No related tags found
1 merge request!71Debug pulse based pad
Pipeline #
...@@ -92,30 +92,45 @@ class PPGSecure(Preprocessor): ...@@ -92,30 +92,45 @@ class PPGSecure(Preprocessor):
pyplot.show() pyplot.show()
# detect landmarks # detect landmarks
try: ldms = self.detector(frame)
ldms = self.detector(frame)
except TypeError: if ldms is None:
# looks like one video from replay mobile is upside down ! 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) rotated_shape = bob.ip.base.rotated_output_shape(frame, 180)
frame_rotated = numpy.ndarray(rotated_shape, dtype=numpy.float64) frame_rotated = numpy.ndarray(rotated_shape, dtype=numpy.float64)
from bob.ip.base import rotate from bob.ip.base import rotate
bob.ip.base.rotate(frame, frame_rotated, 180) bob.ip.base.rotate(frame, frame_rotated, 180)
frame_rotated = frame_rotated.astype(numpy.uint8) frame_rotated = frame_rotated.astype(numpy.uint8)
logger.warning("Rotating again ...") logger.warning("Rotating 180 degrees ...")
try:
ldms = self.detector(frame_rotated) # check the rotated frame
except TypeError: 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 ldms = previous_ldms
# so do nothing ... # so do nothing ...
logger.warning("No mask detected in frame {}".format(i)) logger.warning("No mask detected in frame {}".format(i))
green_mean[i, :] = 0 green_mean[i] = [0, 0, 0, 0, 0]
continue continue
frame = frame_rotated 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: if ldms is None:
ldms = previous_ldms if previous_ldms is None:
logger.warning("Frame {}: no landmarks detected, using the ones from previous frame".format(i)) 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: if self.debug:
from matplotlib import pyplot from matplotlib import pyplot
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment