Sorry for coming back late. Attached is a code snippet that works for me.
Press SPACE to load next image; press ESC to exit; I didn’t add border check in this simple file (like file not found).
Please let me know if you have further problems.
import open3d as o3d
import numpy as np
class ImLoader:
def __init__(self, base_path, base_index=0):
# path to the indexed files
self.path = base_path
self.index = base_index
def next(self):
self.index += 1
# Or other format you desire
return o3d.io.read_image('{}/{}.png'.format(self.path, self.index))
class Visualizer:
def __init__(self, imloader):
# Global flags
self.flag_exit = False
self.flag_next = False
self.imloader = imloader
self.curr_im = imloader.next()
def escape_callback(self, vis):
self.flag_exit = True
return False
def space_callback(self, vis):
lhs = np.asarray(self.curr_im)
rhs = np.asarray(imloader.next())
lhs[:] = rhs[:]
return False
def run(self):
glfw_key_escape = 256
glfw_key_space = 32
vis = o3d.visualization.VisualizerWithKeyCallback()
vis.register_key_callback(glfw_key_escape, self.escape_callback)
vis.register_key_callback(glfw_key_space, self.space_callback)
vis.create_window('recorder', 1920, 540)
vis.add_geometry(self.curr_im)
vis_geometry_added = False
while not self.flag_exit:
vis.update_geometry(self.curr_im)
vis.poll_events()
vis.update_renderer()
if __name__ == '__main__':
imloader = ImLoader('.')
vis = Visualizer(imloader)
vis.run()