python读取 pcd 数据 三种方法
生活随笔
收集整理的這篇文章主要介紹了
python读取 pcd 数据 三种方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼在git
import open3d as o3d import numpy as npdef read_pcd(file_path):pcd = o3d.io.read_point_cloud(file_path)# print(np.asarray(pcd.points))colors = np.asarray(pcd.colors) * 255points = np.asarray(pcd.points)# print(points.shape, colors.shape) # return np.concatenate([points, colors], axis=-1)return pointsa=read_pcd('b1.pcd')print(a)#第二種 def read_pcd(pcd_path):lines = []num_points = Nonewith open(pcd_path, 'r') as f:for line in f:lines.append(line.strip())if line.startswith('POINTS'):num_points = int(line.split()[-1])assert num_points is not Nonepoints = []for line in lines[-num_points:]:x, y, z, i = list(map(float, line.split()))#這里沒有把i放進去,也是為了后面 x, y, z 做矩陣變換的時候方面#但這個理解我選擇保留, 因為可能把i放進去也不影響代碼的簡易程度points.append((np.array([x, y, z, i])))return pointsa0=read_pcd('b1.pcd') a=np.array(a0) print(a) #第三種 def load_pcd_to_ndarray(pcd_path):with open(pcd_path) as f:while True:ln = f.readline().strip()if ln.startswith('DATA'):breakpoints = np.loadtxt(f)points = points[:, 0:4]return points a0=read_pcd('b1.pcd') a=np.array(a0) print(a) #第四種(需要源碼安裝pypcd)鏈接在底部 # import argparse # from pypcd import pypcd # import numpy as np # parser = argparse.ArgumentParser() # parser.add_argument('--pcd_path', default='', type=str) # args = parser.parse_args()# def read_pcd(pcd_path): # pcd = pypcd.PointCloud.from_path(pcd_path) # pcd_np_points = np.zeros((pcd.points, 5), dtype=np.float32) # print(pcd.pc_data['x']) # pcd_np_points[:, 0] = np.transpose(pcd.pc_data['x']) # pcd_np_points[:, 1] = np.transpose(pcd.pc_data['y']) # pcd_np_points[:, 2] = np.transpose(pcd.pc_data['z']) # pcd_np_points[:, 3] = np.transpose(pcd.pc_data['intensity']) # pcd_np_points[:, 4] = np.transpose(pcd.pc_data['is_ground'])# del_index = np.where(np.isnan(pcd_np_points))[0] # pcd_np_points = np.delete(pcd_np_points, del_index, axis=0) # return pcd_np_points# read_pcd(args.pcd_path)# #第一種 # # pip3 install python-pcl # import pcl # #pcd_ndarray = pcl.load(args.pcd_path).to_array()[:, :3] #不要intensity # pcd_ndarray = pcl.load_XYZI(args.pcd_path).to_array()[:, :4] # point_num = pcd_ndarray.shape[0] # # shape屬性可以獲取矩陣的形狀(例如二維數組的行列),獲取的結果是一個元組總結
以上是生活随笔為你收集整理的python读取 pcd 数据 三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCL:关于pcd数据显示乱码
- 下一篇: 点云格式解读 PCD