mrcal-from-ros - Converts a ROS/OpenCV-formatted camera model to the .cameramodel file format
$ cat model1.yaml
image_width: 2448
image_height: 2050
camera_name: prosilica
camera_matrix:
rows: 3
cols: 3
data: [4827.94, 0, 1223.5, 0, 4835.62, 1024.5, 0, 0, 1]
distortion_model: plumb_bob
distortion_coefficients:
rows: 1
cols: 5
data: [-0.41527, 0.31874, -0.00197, 0.00071, 0]
rectification_matrix:
rows: 3
cols: 3
data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
projection_matrix:
rows: 3
cols: 4
data: [4827.94, 0, 1223.5, 0, 0, 4835.62, 1024.5, 0, 0, 0, 1, 0]
$ mrcal-from-ros model1.yaml model2.yaml
Wrote model1.cameramodel
Wrote model2.cameramodel
$ cat model1.cameramodel
{
'lensmodel': 'LENSMODEL_OPENCV5',
# intrinsics are fx,fy,cx,cy,distortion0,distortion1,....
'intrinsics': [ 4827.94, 4835.62, 1223.5, 1024.5, -0.41527, 0.31874, -0.00197, 0.00071, 0,],
'rt_cam_ref': [ 0, 0, 0, 0, 0, 0,],
'extrinsics': [ 0, 0, 0, 0, 0, 0,], # for compatibility with mrcal < 2.5
'imagersize': [ 2448, 2050,],
}
$ rostopic echo -n1 -b tst.bag /camera/camera_info \
| head -n -1 \
| mrcal-from-ros \
> model.cameramodel
File formats supported by mrcal are described at https://mrcal.secretsauce.net/cameramodels.html#cameramodel-file-formats
This tool converts the given model(s) to the cameramodel file format. No changes to the content are made; this is purely a format converter (the mrcal-convert-lensmodel tool fits different lens models instead). Model filenames are given on the commandline. Output is written to the same directory, with the same filename, but with a .cameramodel extension.
If the model is omitted or given as "-", the input is read from standard input, and the output is written to standard output.
Note: there's no corresponding mrcal-to-ros tool at this time, because the behavior of such a tool isn't well-defined. Talk to me if this would be useful to you, to clarify what it should do, exactly.
model Input camera model
-h, --help show this help message and exit
--force, -f By default existing files are not overwritten. Pass --force
to overwrite them without complaint
--outdir OUTDIR Directory to write the output models into. If omitted, we
write the output models to the same directory as the input
models
https://www.github.com/dkogan/mrcal
Dima Kogan, <dima@secretsauce.net>
Copyright (c) 2017-2023 California Institute of Technology ("Caltech"). U.S. Government sponsorship acknowledged. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0