Commit b2583e61 authored by Oleg Dzhimiev's avatar Oleg Dzhimiev

removed debug, added 16bit depth map conversion from *.exr

parent 81a91132
...@@ -80,7 +80,7 @@ rn = scene.node_tree.nodes.new('CompositorNodeRLayers') ...@@ -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
...@@ -109,5 +109,3 @@ for fpath in fpaths: ...@@ -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"))
...@@ -11,7 +11,6 @@ def exr2arr(exrfile): ...@@ -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:
...@@ -23,8 +22,7 @@ def exr2arr(exrfile): ...@@ -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__":
......
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)
model_output_folder = "output" fname = '1527256815_550165-depth.exr'
\ No newline at end of file
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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment