1474 def _build(self):
1475 p = CALIB_PARAMS[self.active_cam]
1476 cv2.namedWindow(self.WIN, cv2.WINDOW_NORMAL)
1477 cv2.resizeWindow(self.WIN, 500, 280)
1478
1479
1480
1481 cv2.createTrackbar('VP X', self.WIN, p['vanishing_point'][0], DISP_W, lambda v: self._on_change())
1482 cv2.createTrackbar('VP Y', self.WIN, p['vanishing_point'][1], DISP_H, lambda v: self._on_change())
1483 cv2.createTrackbar('Near Y', self.WIN, p['near_y'], DISP_H, lambda v: self._on_change())
1484 cv2.createTrackbar('Far Y', self.WIN, p['far_y'], DISP_H, lambda v: self._on_change())
1485 cv2.createTrackbar('Left X', self.WIN, p['left_x'], DISP_W, lambda v: self._on_change())
1486 cv2.createTrackbar('Right X', self.WIN, p['right_x'], DISP_W, lambda v: self._on_change())
1487 cv2.createTrackbar('Spots', self.WIN, p['n_spots'], 20, lambda v: self._on_change())
1488 cv2.createTrackbar('Rows', self.WIN, p['n_rows'], 6, lambda v: self._on_change())
1489
1490 fisheye_int = int(p['fisheye_distortion'] * 100) + 30
1491 cv2.createTrackbar('Fisheye x100', self.WIN, fisheye_int, 60, lambda v: self._on_change())
1492 strength_int = int(p.get('perspective_strength', 1.0) * 100)
1493 cv2.createTrackbar('Persp x100', self.WIN, strength_int, 100, lambda v: self._on_change())
1494 cv2.createTrackbar('Min Height', self.WIN, p.get('min_roi_height', 60), DISP_H, lambda v: self._on_change())
1495 self.suppress_auto = True
1496 self.open = True
1497 print(f"[Calib] Window open for {self.active_cam}. Drag sliders to tune, C to close.")
1498