open-mmlab / mmdetection3d

OpenMMLab's next-generation platform for general 3D object detection.
https://mmdetection3d.readthedocs.io/en/latest/
Apache License 2.0
5.35k stars 1.55k forks source link

[Fix] Problem of failing to save images after open3d visualization #3058

Open Aiuan opened 1 week ago

Aiuan commented 1 week ago

Motivation

While verifying the inference demo according to the following code in Get Started, we often find that the open3d library can visualize the point cloud and detection results, but after closing the visualization window, the results are not saved to the image (the image is often completely black). To fix this issue we raised this PR.

Code:

python demo/pcd_demo.py demo/data/kitti/000008.bin pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py hv_pointpillars_secfpn_6x8_160e_kitti-3d-car_20220331_134606-d42d15ed.pth --show

Visualize window: image

Saved image (before modification): image

Modification

We modify the show() function in the mmdet3d/visualization/local_visualizer.py file.

  1. We annotate self.o3d_vis.clear_geometries() in line 887, because geometries should not be cleared before saving as an image.
  2. We modify self.o3d_vis.capture_screen_image(save_path) in line 896 to self.o3d_vis.capture_screen_image(save_path, do_render=True), because we need to re-render after manually closing the visualization window to ensure that the stored image is not empty.

After our modification, the visualization results can be saved to the image normally.

Saved image (after modification): image

CLAassistant commented 1 week ago

CLA assistant check
All committers have signed the CLA.