Merge branch 'master' into dev

This commit is contained in:
unknown
2026-01-13 10:03:08 +08:00
4 changed files with 28 additions and 10 deletions
BIN
View File
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

After

Width:  |  Height:  |  Size: 2.0 MiB

+3
View File
@@ -32,6 +32,9 @@ def main():
# 步骤 2.1: 获取并拼接图像 (必要步骤) # 步骤 2.1: 获取并拼接图像 (必要步骤)
sensor.get_img() sensor.get_img()
print("img_size_raw:", sensor.img_size_raw) print("img_size_raw:", sensor.img_size_raw)
if sensor.detect_motion():
print("motion detected")
break
# 步骤 2.2: 计算形变场 (必要步骤) # 步骤 2.2: 计算形变场 (必要步骤)
sensor.compute_deformation() sensor.compute_deformation()
# 步骤 2.3: 计算触碰点 # 步骤 2.3: 计算触碰点
+25 -10
View File
@@ -96,6 +96,7 @@ class Sensor:
self.img = None self.img = None
self.img_size_raw = None self.img_size_raw = None
self.img_filtered = None self.img_filtered = None
self.prev_img = None
self.flow = None self.flow = None
self.vnormal = None self.vnormal = None
self.vshear = None self.vshear = None
@@ -185,23 +186,37 @@ class Sensor:
# Resize # Resize
img = cv2.resize(img, tuple(self._config_resolution_stitch), interpolation=cv2.INTER_CUBIC) img = cv2.resize(img, tuple(self._config_resolution_stitch), interpolation=cv2.INTER_CUBIC)
# Temporal filtering (noise reduction) # # Temporal filtering (noise reduction)
alpha = 0.7 # alpha = 0.7
if self.img_filtered is None: # if self.img_filtered is None:
self.img_filtered = img.astype(np.float32) # self.img_filtered = img.astype(np.float32)
else: # else:
self.img_filtered = alpha * img + (1 - alpha) * self.img_filtered # self.img_filtered = alpha * img + (1 - alpha) * self.img_filtered
# Update previous image
self.img = self.img_filtered.astype(np.uint8) if self.mirror:
img = cv2.flip(img, 1)
if self.img is not None:
self.prev_img = self.img.copy()
self.img = img.astype(np.uint8)
if self.prev_img is None:
self.prev_img = img.copy()
if log_timing: if log_timing:
timings['total'] = (time.perf_counter() - t_start) * 1000 timings['total'] = (time.perf_counter() - t_start) * 1000
self._print_timings("get_img", timings) self._print_timings("get_img", timings)
if self.mirror:
self.img = cv2.flip(self.img, 1)
return self.img.copy() return self.img.copy()
def detect_motion(self, threshold=10):
if self.prev_img is None:
return False
diff = cv2.absdiff(self.img, self.prev_img)
return diff.mean() > threshold
def compute_deformation(self): def compute_deformation(self):
""" """
Compute optical flow and decompose into force components. Compute optical flow and decompose into force components.