From 0b88a47fa0a7710936dfc8d79b86dedf721f56a9 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Tue, 25 Nov 2025 18:20:46 +0100 Subject: [PATCH] suppress deprecation warning --- cam_pose_charuco_board.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/cam_pose_charuco_board.py b/cam_pose_charuco_board.py index 3ba6d58..90ed4c9 100644 --- a/cam_pose_charuco_board.py +++ b/cam_pose_charuco_board.py @@ -3,6 +3,7 @@ import numpy as np import cv2 as cv import argparse from aruco_types import ARUCO_DICT +import math ENTRY = {'charuco_corners': [], 'charuco_ids': [], 'obj_points': [], 'img_points': []} CAM_CALIB_FILE = "results/cam_calib_charuco.npz" @@ -41,6 +42,7 @@ def main(): process_video(detector, board) def process_video(detector: cv.aruco.CharucoDetector, board): + global ENTRY mtx = None dist = None rvecs = None @@ -71,6 +73,8 @@ def process_video(detector: cv.aruco.CharucoDetector, board): img_size = store_frame(detector, board, img) elif k == ord('c'): mtx, dist, _, _ = calibrate_camera(img_size, mtx, dist, None, None) + elif k == ord('x'): + ENTRY = {'charuco_corners': [], 'charuco_ids': [], 'obj_points': [], 'img_points': []} else: process(detector, board, img, mtx, dist, rvecs, tvecs) @@ -99,11 +103,10 @@ def store_frame(detector: cv.aruco.CharucoDetector, board: cv.aruco.Board, img): return img_size def calibrate_camera(img_size, mtx, dist, rvecs=None, tvecs=None): - global ENTRY if len(ENTRY['obj_points']) > 0 and len(ENTRY['img_points']) > 0: - ret, mtx, dist, rvecs, tvecs = cv.calibrateCamera(ENTRY['obj_points'], ENTRY['img_points'], img_size, mtx, dist, rvecs=rvecs, tvecs=tvecs) + flags = cv.CALIB_USE_INTRINSIC_GUESS + ret, mtx, dist, rvecs, tvecs = cv.calibrateCamera(ENTRY['obj_points'], ENTRY['img_points'], img_size, mtx, dist, rvecs=rvecs, tvecs=tvecs, flags=flags) np.savez(f"{CAM_CALIB_FILE}", mtx=mtx, dist=dist, rvecs=rvecs, tvecs=tvecs) - ENTRY = {'charuco_corners': [], 'charuco_ids': [], 'obj_points': [], 'img_points': []} print(f"Camera calibration finished. Result = {ret}") return mtx, dist, rvecs, tvecs @@ -123,6 +126,8 @@ def process(detector: cv.aruco.CharucoDetector, board: cv.aruco.Board, img, mtx, obj_points, img_points = board.matchImagePoints(charuco_corners, charuco_ids) if mtx is not None and dist is not None: pose, rvec, tvec = cv.solvePnP(obj_points, img_points, mtx, dist, rvec=rvecs, tvec=tvecs) + rot = [float(180/math.pi*v) for v in rvec[:,0]] + print(f"Rotation X|Y|Z: {rot[0]:.1f} | {rot[1]:.1f} | {rot[2]:.1f}") if pose: # Draw Axis cv.drawFrameAxes(img, mtx, dist, rvec, tvec, 10)