Loading blender_generate_image_and_depth.py +1 −3 Original line number Original line Diff line number Diff line Loading @@ -80,7 +80,7 @@ rn = scene.node_tree.nodes.new('CompositorNodeRLayers') depth = scene.node_tree.nodes.new('CompositorNodeOutputFile') depth = scene.node_tree.nodes.new('CompositorNodeOutputFile') depth.format.file_format = 'OPEN_EXR' depth.format.file_format = 'OPEN_EXR' depth.format.color_depth = '32' depth.format.color_depth = '32' # TODO: try BW # Note: no option for BW? depth.format.color_mode = 'RGB' depth.format.color_mode = 'RGB' depth.format.exr_codec = 'ZIP' depth.format.exr_codec = 'ZIP' depth.base_path = model_output_folder depth.base_path = model_output_folder Loading Loading @@ -109,5 +109,3 @@ for fpath in fpaths: bpy.data.objects.remove(obj) bpy.data.objects.remove(obj) # rename exr # rename exr os.rename(os.path.join(model_output_folder,'depth-0001.exr'),os.path.join(model_output_folder,obj_name+"-depth.exr")) os.rename(os.path.join(model_output_folder,'depth-0001.exr'),os.path.join(model_output_folder,obj_name+"-depth.exr")) exr2png.py +1 −3 Original line number Original line Diff line number Diff line Loading @@ -11,7 +11,6 @@ def exr2arr(exrfile): dw = file.header()['dataWindow'] dw = file.header()['dataWindow'] channels = file.header()['channels'].keys() channels = file.header()['channels'].keys() print(channels) channels_list = list() channels_list = list() for c in ('R', 'G', 'B', 'A'): for c in ('R', 'G', 'B', 'A'): if c in channels: if c in channels: Loading @@ -23,8 +22,7 @@ def exr2arr(exrfile): color_channels = file.channels(channels_list, Imath.PixelType(Imath.PixelType.FLOAT)) color_channels = file.channels(channels_list, Imath.PixelType(Imath.PixelType.FLOAT)) channels_tuple = [np.fromstring(channel, dtype='f') for channel in color_channels] channels_tuple = [np.fromstring(channel, dtype='f') for channel in color_channels] res = np.dstack(channels_tuple) res = np.dstack(channels_tuple) res.reshape(size + (len(channels_tuple),)) return res.reshape(size + (len(channels_tuple),)) return res[:,:,0] if __name__ == "__main__": if __name__ == "__main__": Loading obj2rgbd.py +32 −7 Original line number Original line Diff line number Diff line import os import os import subprocess import subprocess import exr2png as e2p PATH_TO_BLENDER = '' # depth map scale, units in the generated depth map for RGB-D - 16-bit png PATH_TO_BLENDER = "" #DMP = 1 # 1 m - range 0-65535 m #DMP = 0.1 # 10 cm - range 0-6553.5 m DMP = 0.01 # 1 cm - range 0-655.35 m #DMP = 0.001 # 1 mm - range 0-65.535 m fpaths = ['input/1527256815_550165_v01/1527256815_550165.obj', fpaths = ['input/1527256815_550165_v01/1527256815_550165.obj',] 'input/1527256903_350165/v03/1527256903_350165.obj', 'input/1488240695_710844_x3d105/1488240695_710844.obj'] filelist = ','.join(fpaths) filelist = ','.join(fpaths) # this will run by Blender's bundled python # this will run by Blender's bundled python subprocess.run(os.path.join(PATH_TO_BLENDER,'blender')+" -b -P blender_generate_image_and_depth.py -- "+filelist, shell=True) subprocess.run(os.path.join(PATH_TO_BLENDER,'blender')+" -b -P blender_generate_image_and_depth.py -- "+filelist, shell=True) fname = '1527256815_550165-depth.exr' model_output_folder = "output" model_output_folder = "output" fname = os.path.join(model_output_folder,fname) import exr2png as e2p import matplotlib.pyplot as plt from PIL import Image import numpy as np dmap = e2p.exr2arr(fname)[:,:,0] # zero background if dmap.dtype=='float32': dmap[dmap==10000000000.0]=0 dmap = dmap/DMP dmap[dmap>65535]=0 im = Image.fromarray(dmap.astype(np.uint16)) im.save(os.path.join(model_output_folder,'model-depth.png')) plt.imshow(dmap) plt.colorbar() plt.show() No newline at end of file Loading
blender_generate_image_and_depth.py +1 −3 Original line number Original line Diff line number Diff line Loading @@ -80,7 +80,7 @@ rn = scene.node_tree.nodes.new('CompositorNodeRLayers') depth = scene.node_tree.nodes.new('CompositorNodeOutputFile') depth = scene.node_tree.nodes.new('CompositorNodeOutputFile') depth.format.file_format = 'OPEN_EXR' depth.format.file_format = 'OPEN_EXR' depth.format.color_depth = '32' depth.format.color_depth = '32' # TODO: try BW # Note: no option for BW? depth.format.color_mode = 'RGB' depth.format.color_mode = 'RGB' depth.format.exr_codec = 'ZIP' depth.format.exr_codec = 'ZIP' depth.base_path = model_output_folder depth.base_path = model_output_folder Loading Loading @@ -109,5 +109,3 @@ for fpath in fpaths: bpy.data.objects.remove(obj) bpy.data.objects.remove(obj) # rename exr # rename exr os.rename(os.path.join(model_output_folder,'depth-0001.exr'),os.path.join(model_output_folder,obj_name+"-depth.exr")) os.rename(os.path.join(model_output_folder,'depth-0001.exr'),os.path.join(model_output_folder,obj_name+"-depth.exr"))
exr2png.py +1 −3 Original line number Original line Diff line number Diff line Loading @@ -11,7 +11,6 @@ def exr2arr(exrfile): dw = file.header()['dataWindow'] dw = file.header()['dataWindow'] channels = file.header()['channels'].keys() channels = file.header()['channels'].keys() print(channels) channels_list = list() channels_list = list() for c in ('R', 'G', 'B', 'A'): for c in ('R', 'G', 'B', 'A'): if c in channels: if c in channels: Loading @@ -23,8 +22,7 @@ def exr2arr(exrfile): color_channels = file.channels(channels_list, Imath.PixelType(Imath.PixelType.FLOAT)) color_channels = file.channels(channels_list, Imath.PixelType(Imath.PixelType.FLOAT)) channels_tuple = [np.fromstring(channel, dtype='f') for channel in color_channels] channels_tuple = [np.fromstring(channel, dtype='f') for channel in color_channels] res = np.dstack(channels_tuple) res = np.dstack(channels_tuple) res.reshape(size + (len(channels_tuple),)) return res.reshape(size + (len(channels_tuple),)) return res[:,:,0] if __name__ == "__main__": if __name__ == "__main__": Loading
obj2rgbd.py +32 −7 Original line number Original line Diff line number Diff line import os import os import subprocess import subprocess import exr2png as e2p PATH_TO_BLENDER = '' # depth map scale, units in the generated depth map for RGB-D - 16-bit png PATH_TO_BLENDER = "" #DMP = 1 # 1 m - range 0-65535 m #DMP = 0.1 # 10 cm - range 0-6553.5 m DMP = 0.01 # 1 cm - range 0-655.35 m #DMP = 0.001 # 1 mm - range 0-65.535 m fpaths = ['input/1527256815_550165_v01/1527256815_550165.obj', fpaths = ['input/1527256815_550165_v01/1527256815_550165.obj',] 'input/1527256903_350165/v03/1527256903_350165.obj', 'input/1488240695_710844_x3d105/1488240695_710844.obj'] filelist = ','.join(fpaths) filelist = ','.join(fpaths) # this will run by Blender's bundled python # this will run by Blender's bundled python subprocess.run(os.path.join(PATH_TO_BLENDER,'blender')+" -b -P blender_generate_image_and_depth.py -- "+filelist, shell=True) subprocess.run(os.path.join(PATH_TO_BLENDER,'blender')+" -b -P blender_generate_image_and_depth.py -- "+filelist, shell=True) fname = '1527256815_550165-depth.exr' model_output_folder = "output" model_output_folder = "output" fname = os.path.join(model_output_folder,fname) import exr2png as e2p import matplotlib.pyplot as plt from PIL import Image import numpy as np dmap = e2p.exr2arr(fname)[:,:,0] # zero background if dmap.dtype=='float32': dmap[dmap==10000000000.0]=0 dmap = dmap/DMP dmap[dmap>65535]=0 im = Image.fromarray(dmap.astype(np.uint16)) im.save(os.path.join(model_output_folder,'model-depth.png')) plt.imshow(dmap) plt.colorbar() plt.show() No newline at end of file