ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • open3d extract depth map from mesh
    Base Line/python 기초 코드 2022. 3. 14. 22:16

    별의별것을 다해봤던거 같다 그나마 가장 깔끔하고 자동화 가능할 거 같은 open3d 라이브러리가 나은 거 같다.

    이럴때면 누가 옆에서 알려줬으면... ㅋㅋ 

    import open3d as o3d
    import math
    import os
    import camera
    import matplotlib.pyplot as plt
    import matplotlib.image as mpimg
    import numpy as np
    #import open3d
    import cv2 as cv
    #import loader.loader as load
    #from PIL import Image
    
    smplpath="C:\\Users\\user\\Desktop\\normal\\0003.obj"
    
    filepath,fullflname = os.path.split(smplpath)
    fname,ext = os.path.splitext(fullflname)
    outpath= "C:\\Users\\user\\Desktop\\normal\\depth\\"+fname+'.jpeg'
    #outpath=os.path.dirname(filepath)+'\\depth\\'+fname+'.png'
    print(outpath)
    
    def custom_draw_geometry_with_key_callback(pcd):
        w=1024
        h=1024
        vis = o3d.visualization.Visualizer()
        vis=vis.add_geometry(pcd)
        def change_background_to_black(vis):
            opt = vis.get_render_option()
            opt.background_color = np.asarray([0, 0, 0])
            return False
    
        
        def capture_depth(vis):
        	#depth buffer
            depth = vis.capture_depth_float_buffer()
            plt.imshow(np.asarray(depth))
            plt.show()
            im = np.asarray(depth)
            plt.imsave('depth.jpeg',im)
            return False
    
        def capture_image(vis):
            image = vis.capture_screen_float_buffer()
            plt.imshow(np.asarray(image))
            plt.show()
            im = np.asarray(image)
            im.save('depth','jpeg')
            return False
    
        key_to_callback = {}
        key_to_callback[ord("K")] = change_background_to_black
        #key_to_callback[ord("R")] = load_render_option
        key_to_callback[ord(",")] = capture_depth
        key_to_callback[ord(".")] = capture_image
        o3d.visualization.draw_geometries_with_key_callbacks([pcd], key_to_callback,width=w,height=h,left=0,top=0)
    
    
    
    mesh = o3d.io.read_triangle_mesh(smplpath)
    #m = load.Obj()
    #mesh=m
    #mesh=dict_to_open3dmesh(mesh)
    mesh.compute_vertex_normals()
    #pcd = mesh.sample_points_poisson_disk(10000)
    custom_draw_geometry_with_key_callback(mesh)

    'Base Line > python 기초 코드' 카테고리의 다른 글

    pillow 이미지 rotation, flip  (1) 2022.04.18
    data_loader  (0) 2022.04.04
    Depth_Render.py  (0) 2022.03.16
    path & os  (0) 2022.03.09
    Numpy  (0) 2022.02.21
Designed by Tistory.