added some visualization tools for lidar pointclouds
This commit is contained in:
60
tools/create_camera_settings.py
Normal file
60
tools/create_camera_settings.py
Normal file
@@ -0,0 +1,60 @@
|
||||
from configargparse import ArgParser, YAMLConfigFileParser, ArgumentDefaultsRawHelpFormatter
|
||||
from sys import exit
|
||||
from open3d.geometry import Geometry
|
||||
from open3d.visualization import Visualizer
|
||||
from open3d.io import write_pinhole_camera_parameters
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
from util import (
|
||||
load_dataset_from_bag,
|
||||
existing_file,
|
||||
)
|
||||
|
||||
|
||||
def create_camera_settings(geometry: Geometry, camera_config_output_json_path: Path) -> None:
|
||||
vis = Visualizer()
|
||||
vis.create_window()
|
||||
vis.add_geometry(geometry)
|
||||
vis.run()
|
||||
parameters = vis.get_view_control().convert_to_pinhole_camera_parameters()
|
||||
write_pinhole_camera_parameters(camera_config_output_json_path.as_posix(), parameters)
|
||||
print(f"Written camera config to {camera_config_output_json_path.as_posix()}!")
|
||||
vis.destroy_window()
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = ArgParser(
|
||||
config_file_parser_class=YAMLConfigFileParser,
|
||||
default_config_files=["create_camera_settings_config.yaml"],
|
||||
formatter_class=ArgumentDefaultsRawHelpFormatter,
|
||||
description="Use an interactive window to move the camera and export the camera view at the moment of closing"
|
||||
" the window into a JSON file",
|
||||
)
|
||||
parser.add_argument("--render-config-file", is_config_file=True, help="yaml config file path")
|
||||
parser.add_argument("--input-bag-path", required=True, type=existing_file, help="path to bag file")
|
||||
parser.add_argument(
|
||||
"--camera-config-output-json-path",
|
||||
default=Path("./saved_camera_settings.json"),
|
||||
type=Path,
|
||||
help="path the camera settings json file should be saved to",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--bag-pointcloud-index",
|
||||
type=int,
|
||||
default=0,
|
||||
help="index of the frame inside the experiment bag that should be displayed in 3d",
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
print("Creating camera settings!")
|
||||
print("Move the view in the window to the desired camera position" " and then close the window using the ESC key!")
|
||||
dataset = load_dataset_from_bag(args.input_bag_path)
|
||||
open3d_pointcloud = dataset[args.bag_pointcloud_index].to_instance("open3d")
|
||||
create_camera_settings(open3d_pointcloud, args.camera_config_output_json_path)
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
exit(main())
|
||||
Reference in New Issue
Block a user