|
|
@@ -122,7 +122,7 @@ class OverlapDiscovery:
|
|
|
ptz: PTZCamera,
|
|
|
get_panorama_frame: Callable[[], np.ndarray],
|
|
|
ptz_capture: Callable[[], Optional[np.ndarray]],
|
|
|
- pan_range: Tuple[float, float] = (0, 180),
|
|
|
+ pan_range: Tuple[float, float] = (0, 360),
|
|
|
tilt_range: Tuple[float, float] = (-30, 30),
|
|
|
pan_step: float = 20,
|
|
|
tilt_step: float = 15,
|
|
|
@@ -479,7 +479,7 @@ class CameraCalibrator:
|
|
|
self.use_feature_matching = True
|
|
|
|
|
|
# 重叠发现配置
|
|
|
- self.overlap_pan_range = (0, 180)
|
|
|
+ self.overlap_pan_range = (0, 360)
|
|
|
self.overlap_tilt_range = (-30, 30)
|
|
|
self.overlap_pan_step = 20
|
|
|
self.overlap_tilt_step = 15
|
|
|
@@ -533,7 +533,16 @@ class CameraCalibrator:
|
|
|
self.on_complete(self.result)
|
|
|
return self.result
|
|
|
|
|
|
- print(f"\n发现 {len(self.overlap_ranges)} 个重叠区间,进入阶段2校准")
|
|
|
+ print(f"\n发现 {len(self.overlap_ranges)} 个重叠区间")
|
|
|
+
|
|
|
+ # 选择匹配点最多的区间用于校准
|
|
|
+ best_range = max(self.overlap_ranges, key=lambda r: r.match_count)
|
|
|
+ self.overlap_ranges = [best_range]
|
|
|
+
|
|
|
+ print(f"选择最佳重叠区间: pan=[{best_range.pan_start:.0f}°, {best_range.pan_end:.0f}°], "
|
|
|
+ f"tilt=[{best_range.tilt_start:.0f}°, {best_range.tilt_end:.0f}°], "
|
|
|
+ f"匹配点={best_range.match_count}")
|
|
|
+ print(f"进入阶段2校准")
|
|
|
|
|
|
# ===================== 阶段2: 在重叠区内精确校准 =====================
|
|
|
print(f"\n{'='*60}")
|