Skip to content

Commit b041270

Browse files
committed
Collect all camera intrinsics and write to files
1 parent f1ef086 commit b041270

1 file changed

Lines changed: 102 additions & 0 deletions

File tree

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# ROS Headers
2+
import rospy
3+
from sensor_msgs.msg import Image,PointCloud2, CameraInfo
4+
import sensor_msgs.point_cloud2 as pc2
5+
import ctypes
6+
import struct
7+
import pickle
8+
import image_geometry
9+
10+
import numpy as np
11+
import os
12+
import time
13+
14+
oak_info = None
15+
stereo_info = None
16+
right_info = None
17+
left_info = None
18+
fl_info = None
19+
fr_info = None
20+
rl_info = None
21+
rr_info = None
22+
23+
def oak_callback(info : CameraInfo):
24+
global oak_info
25+
oak_info = info
26+
27+
def stereo_callback(info : CameraInfo):
28+
global stereo_info
29+
stereo_info = info
30+
31+
def right_callback(info : CameraInfo):
32+
global right_info
33+
right_info = info
34+
35+
def left_callback(info : CameraInfo):
36+
global left_info
37+
left_info = info
38+
39+
def fl_callback(info : CameraInfo):
40+
global fl_info
41+
fl_info = info
42+
43+
def fr_callback(info : CameraInfo):
44+
global fr_info
45+
fr_info = info
46+
47+
def rl_callback(info : CameraInfo):
48+
global rl_info
49+
rl_info = info
50+
51+
def rr_callback(info : CameraInfo):
52+
global rr_info
53+
rr_info = info
54+
55+
def get_intrinsics(folder):
56+
model = image_geometry.PinholeCameraModel()
57+
model.fromCameraInfo(oak_info)
58+
with open(os.path.join(folder, "oak.txt"), "w") as f:
59+
f.write(model.intrinsicMatrix())
60+
model.fromCameraInfo(stereo_info)
61+
with open(os.path.join(folder, "stereo.txt"), "w") as f:
62+
f.write(model.intrinsicMatrix())
63+
model.fromCameraInfo(right_info)
64+
with open(os.path.join(folder, "right.txt"), "w") as f:
65+
f.write(model.intrinsicMatrix())
66+
model.fromCameraInfo(left_info)
67+
with open(os.path.join(folder, "left.txt"), "w") as f:
68+
f.write(model.intrinsicMatrix())
69+
model.fromCameraInfo(fl_info)
70+
with open(os.path.join(folder, "fl.txt"), "w") as f:
71+
f.write(model.intrinsicMatrix())
72+
model.fromCameraInfo(fr_info)
73+
with open(os.path.join(folder, "fr.txt"), "w") as f:
74+
f.write(model.intrinsicMatrix())
75+
model.fromCameraInfo(rl_info)
76+
with open(os.path.join(folder, "rl.txt"), "w") as f:
77+
f.write(model.intrinsicMatrix())
78+
model.fromCameraInfo(rr_info)
79+
with open(os.path.join(folder, "rr.txt"), "w") as f:
80+
f.write(model.intrinsicMatrix())
81+
82+
def main(folder='data'):
83+
rospy.init_node("capture_cam_info",disable_signals=True)
84+
caminfo_sub = rospy.Subscriber("/oak/rgb/camera_info", CameraInfo, oak_callback)
85+
stereoinfo_sub = rospy.Subscriber("/oak/stereo/camera_info", CameraInfo, stereo_callback)
86+
rightinfo_sub = rospy.Subscriber("/oak/right/camera_info", CameraInfo, right_callback)
87+
leftinfo_sub = rospy.Subscriber("/oak/left/camera_info", CameraInfo, left_callback)
88+
flinfo_sub = rospy.Subscriber("/camera_fl/arena_camera_node/camera_info", CameraInfo, fl_callback)
89+
frinfo_sub = rospy.Subscriber("/camera_fr/arena_camera_node/camera_info", CameraInfo, fr_callback)
90+
rlinfo_sub = rospy.Subscriber("/camera_rl/arena_camera_node/camera_info", CameraInfo, rl_callback)
91+
rrinfo_sub = rospy.Subscriber("/camera_rr/arena_camera_node/camera_info", CameraInfo, rr_callback)
92+
while True:
93+
if oak_info and fl_info and fr_info and rl_info and rr_info:
94+
time.sleep(1)
95+
get_intrinsics(folder)
96+
97+
if __name__ == '__main__':
98+
import sys
99+
folder = 'data'
100+
if len(sys.argv) >= 2:
101+
folder = sys.argv[1]
102+
main(folder)

0 commit comments

Comments
 (0)