forked from UZ-SLAMLab/ORB_SLAM3
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathread_calibration_oakd.py
More file actions
96 lines (72 loc) · 4.16 KB
/
read_calibration_oakd.py
File metadata and controls
96 lines (72 loc) · 4.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env python3
import depthai as dai
import numpy as np
import sys
from pathlib import Path
# Connect Device
with dai.Device() as device:
calibFile = str((Path(__file__).parent / Path(f"calib_{device.getMxId()}.json")).resolve().absolute())
if len(sys.argv) > 1:
calibFile = sys.argv[1]
calibData = device.readCalibration()
calibData.eepromToJsonFile(calibFile)
M_rgb, width, height = calibData.getDefaultIntrinsics(dai.CameraBoardSocket.CAM_A)
print("RGB Camera Default intrinsics...")
print(M_rgb)
print(width)
print(height)
if "OAK-1" in calibData.getEepromData().boardName or "BW1093OAK" in calibData.getEepromData().boardName:
M_rgb = np.array(calibData.getCameraIntrinsics(dai.CameraBoardSocket.CAM_A, 1280, 720))
print("RGB Camera resized intrinsics...")
print(M_rgb)
D_rgb = np.array(calibData.getDistortionCoefficients(dai.CameraBoardSocket.CAM_A))
print("RGB Distortion Coefficients...")
[print(name + ": " + value) for (name, value) in
zip(["k1", "k2", "p1", "p2", "k3", "k4", "k5", "k6", "s1", "s2", "s3", "s4", "τx", "τy"],
[str(data) for data in D_rgb])]
print(f'RGB FOV {calibData.getFov(dai.CameraBoardSocket.CAM_A)}')
else:
M_rgb, width, height = calibData.getDefaultIntrinsics(dai.CameraBoardSocket.CAM_A)
print("RGB Camera Default intrinsics...")
print(M_rgb)
print(width)
print(height)
M_rgb = np.array(calibData.getCameraIntrinsics(dai.CameraBoardSocket.CAM_A, 3840, 2160))
print("RGB Camera resized intrinsics... 3840 x 2160 ")
print(M_rgb)
M_rgb = np.array(calibData.getCameraIntrinsics(dai.CameraBoardSocket.CAM_A, 4056, 3040 ))
print("RGB Camera resized intrinsics... 4056 x 3040 ")
print(M_rgb)
M_left, width, height = calibData.getDefaultIntrinsics(dai.CameraBoardSocket.CAM_B)
print("LEFT Camera Default intrinsics...")
print(M_left)
print(width)
print(height)
M_left = np.array(calibData.getCameraIntrinsics(dai.CameraBoardSocket.CAM_B, 1280, 720))
print("LEFT Camera resized intrinsics... 1280 x 720")
print(M_left)
M_right = np.array(calibData.getCameraIntrinsics(dai.CameraBoardSocket.CAM_C, 1280, 720))
print("RIGHT Camera resized intrinsics... 1280 x 720")
print(M_right)
D_left = np.array(calibData.getDistortionCoefficients(dai.CameraBoardSocket.CAM_B))
print("LEFT Distortion Coefficients...")
[print(name+": "+value) for (name, value) in zip(["k1","k2","p1","p2","k3","k4","k5","k6","s1","s2","s3","s4","τx","τy"],[str(data) for data in D_left])]
D_right = np.array(calibData.getDistortionCoefficients(dai.CameraBoardSocket.CAM_C))
print("RIGHT Distortion Coefficients...")
[print(name+": "+value) for (name, value) in zip(["k1","k2","p1","p2","k3","k4","k5","k6","s1","s2","s3","s4","τx","τy"],[str(data) for data in D_right])]
print(f"RGB FOV {calibData.getFov(dai.CameraBoardSocket.CAM_A)}, Mono FOV {calibData.getFov(dai.CameraBoardSocket.CAM_B)}")
R1 = np.array(calibData.getStereoLeftRectificationRotation())
R2 = np.array(calibData.getStereoRightRectificationRotation())
M_right = np.array(calibData.getCameraIntrinsics(calibData.getStereoRightCameraId(), 1280, 720))
H_left = np.matmul(np.matmul(M_right, R1), np.linalg.inv(M_left))
print("LEFT Camera stereo rectification matrix...")
print(H_left)
H_right = np.matmul(np.matmul(M_right, R1), np.linalg.inv(M_right))
print("RIGHT Camera stereo rectification matrix...")
print(H_right)
lr_extrinsics = np.array(calibData.getCameraExtrinsics(dai.CameraBoardSocket.CAM_B, dai.CameraBoardSocket.CAM_C))
print("Transformation matrix of where left Camera is W.R.T right Camera's optical center")
print(lr_extrinsics)
l_rgb_extrinsics = np.array(calibData.getCameraExtrinsics(dai.CameraBoardSocket.CAM_B, dai.CameraBoardSocket.CAM_A))
print("Transformation matrix of where left Camera is W.R.T RGB Camera's optical center")
print(l_rgb_extrinsics)