日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python读取 pcd 数据 三种方法

發(fā)布時(shí)間:2025/4/5 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python读取 pcd 数据 三种方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

代碼在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放進(jìn)去,也是為了后面 x, y, z 做矩陣變換的時(shí)候方面#但這個(gè)理解我選擇保留, 因?yàn)榭赡馨裪放進(jìn)去也不影響代碼的簡(jiǎn)易程度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屬性可以獲取矩陣的形狀(例如二維數(shù)組的行列),獲取的結(jié)果是一個(gè)元組

總結(jié)

以上是生活随笔為你收集整理的python读取 pcd 数据 三种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。