diff --git a/src/orisys/sensor.py b/src/orisys/sensor.py index ba54a9a..86a08d0 100644 --- a/src/orisys/sensor.py +++ b/src/orisys/sensor.py @@ -117,6 +117,7 @@ class Sensor: shape = (self.__config_cam["resolution_stitch"][1], self.__config_cam["resolution_stitch"][0]) self.img_size_raw = None self.img_filtered = None + self.tail_frames_count = 0 # Optical Flow Data Variables (public) self.flow = np.zeros(shape + (2,), dtype=np.float32) @@ -207,7 +208,7 @@ class Sensor: if not ret: print("Failed to get_img from video source.") - return None + return False # Start processing timing t_processing_start = time.perf_counter() @@ -246,7 +247,7 @@ class Sensor: self._fps = 1.0 / (time.perf_counter() - self.last_log_time) self.last_log_time = time.perf_counter() - return self.img.copy() + return True def detect_motion(self, threshold=6): @@ -255,7 +256,7 @@ class Sensor: # print(f"mag: {mag.max()}, {mag.min()}, {mag.mean()}") return mag.mean() > threshold - def compute_deformation(self, decompose=True, check_motion=True, threshold=6): + def compute_deformation(self, decompose=True, check_motion=True, threshold=6, tail_frames=10): """ Compute optical flow and decompose into force components. @@ -269,13 +270,15 @@ class Sensor: # self.compute_hhd() if check_motion: if self.detect_motion(threshold=threshold): + self.tail_frames_count = 0 self.compute_hhd() return True - else: + else: + if self.tail_frames_count <= tail_frames: + self.tail_frames_count +=1 + self.compute_hhd() + return True return False - else: - if decompose: - self.compute_hhd() return None # return True