import numpy as np import open3d as o3d def point_cloud(image, dp_image): width, height = image.size depth_image = (dp_image * 255 / np.max(dp_image)).astype('uint8') image = np.array(image) depth_o3d = o3d.geometry.Image(depth_image) image_o3d = o3d.geometry.Image(image) rgbd_image = o3d.geometry.RGBDImage.create_from_color_and_depth(image_o3d, depth_o3d, convert_rgb_to_intensity=False) camera_intrinsic = o3d.camera.PinholeCameraIntrinsic() camera_intrinsic.set_intrinsics(width, height, 500, 500, width/2, height/2) pcd = o3d.geometry.PointCloud.create_from_rgbd_image(rgbd_image, camera_intrinsic) o3d.io.write_point_cloud("output_donut.ply", pcd) return pcd