Spaces:
Running
Running
| """ | |
| Utility functions for visualization | |
| """ | |
| from argparse import ArgumentParser, Namespace | |
| from distutils.util import strtobool | |
| import rerun as rr | |
| def log_data_to_rerun(image, depthmap, pose, intrinsics, base_name, mask=None): | |
| """ | |
| Log camera and image data to Rerun visualization tool. | |
| Parameters | |
| ---------- | |
| image : numpy.ndarray | |
| RGB image to be logged | |
| depthmap : numpy.ndarray | |
| Depth map corresponding to the image | |
| pose : numpy.ndarray | |
| 4x4 camera pose matrix with rotation (3x3) and translation (3x1) | |
| intrinsics : numpy.ndarray | |
| Camera intrinsic matrix | |
| base_name : str | |
| Base name for the logged entities in Rerun | |
| mask : numpy.ndarray, optional | |
| Optional segmentation mask for the depth image | |
| """ | |
| # Log camera info and loaded data | |
| height, width = image.shape[0], image.shape[1] | |
| rr.log( | |
| base_name, | |
| rr.Transform3D( | |
| translation=pose[:3, 3], | |
| mat3x3=pose[:3, :3], | |
| ), | |
| ) | |
| rr.log( | |
| f"{base_name}/pinhole", | |
| rr.Pinhole( | |
| image_from_camera=intrinsics, | |
| height=height, | |
| width=width, | |
| camera_xyz=rr.ViewCoordinates.RDF, | |
| ), | |
| ) | |
| rr.log( | |
| f"{base_name}/pinhole/rgb", | |
| rr.Image(image), | |
| ) | |
| rr.log( | |
| f"{base_name}/pinhole/depth", | |
| rr.DepthImage(depthmap), | |
| ) | |
| if mask is not None: | |
| rr.log( | |
| f"{base_name}/pinhole/depth_mask", | |
| rr.SegmentationImage(mask), | |
| ) | |
| def str2bool(v): | |
| return bool(strtobool(v)) | |
| def script_add_rerun_args(parser: ArgumentParser) -> None: | |
| """ | |
| Add common Rerun script arguments to `parser`. | |
| Change Log from https://github.com/rerun-io/rerun/blob/29eb8954b08e59ff96943dc0677f46f7ea4ea734/rerun_py/rerun_sdk/rerun/script_helpers.py#L65: | |
| - Added default portforwarding url for ease of use | |
| - Update parser types | |
| Parameters | |
| ---------- | |
| parser : ArgumentParser | |
| The parser to add arguments to. | |
| Returns | |
| ------- | |
| None | |
| """ | |
| parser.add_argument( | |
| "--headless", | |
| type=str2bool, | |
| nargs="?", | |
| const=True, | |
| default=True, | |
| help="Don't show GUI", | |
| ) | |
| parser.add_argument( | |
| "--connect", | |
| dest="connect", | |
| type=str2bool, | |
| nargs="?", | |
| const=True, | |
| default=True, | |
| help="Connect to an external viewer", | |
| ) | |
| parser.add_argument( | |
| "--serve", | |
| dest="serve", | |
| type=str2bool, | |
| nargs="?", | |
| const=True, | |
| default=False, | |
| help="Serve a web viewer (WARNING: experimental feature)", | |
| ) | |
| parser.add_argument( | |
| "--url", | |
| type=str, | |
| default="rerun+http://127.0.0.1:2004/proxy", | |
| help="Connect to this HTTP(S) URL", | |
| ) | |
| parser.add_argument( | |
| "--save", type=str, default=None, help="Save data to a .rrd file at this path" | |
| ) | |
| parser.add_argument( | |
| "-o", | |
| "--stdout", | |
| dest="stdout", | |
| action="store_true", | |
| help="Log data to standard output, to be piped into a Rerun Viewer", | |
| ) | |
| def init_rerun_args( | |
| headless=True, | |
| connect=True, | |
| serve=False, | |
| url="rerun+http://127.0.0.1:2004/proxy", | |
| save=None, | |
| stdout=False, | |
| ) -> Namespace: | |
| """ | |
| Initialize common Rerun script arguments. | |
| Parameters | |
| ---------- | |
| headless : bool, optional | |
| Don't show GUI, by default True | |
| connect : bool, optional | |
| Connect to an external viewer, by default True | |
| serve : bool, optional | |
| Serve a web viewer (WARNING: experimental feature), by default False | |
| url : str, optional | |
| Connect to this HTTP(S) URL, by default rerun+http://127.0.0.1:2004/proxy | |
| save : str, optional | |
| Save data to a .rrd file at this path, by default None | |
| stdout : bool, optional | |
| Log data to standard output, to be piped into a Rerun Viewer, by default False | |
| Returns | |
| ------- | |
| Namespace | |
| The parsed arguments. | |
| """ | |
| rerun_args = Namespace() | |
| rerun_args.headless = headless | |
| rerun_args.connect = connect | |
| rerun_args.serve = serve | |
| rerun_args.url = url | |
| rerun_args.save = save | |
| rerun_args.stdout = stdout | |
| return rerun_args | |