一、数据分析
以下数据是深度相机拍摄的点云数据,其为为n行6列的文本数据,分别对应x、y、z、r、g、b,列与列之间用‘→’分割。其rgb值不满足open3d程序的点云读写需求,故要将r、g、b的值进行归一化。。
-742.266 -566.249 1237 179 217 240
-747.144 -571.742 1249 179 217 240
-728.721 -559.383 1222 179 215 237
-728.232 -560.756 1225 178 214 236
-720.62 -556.636 1216 177 215 236
-718.359 -556.636 1216 178 216 239
-720.219 -559.84 1223 174 215 237
-713.33 -558.009 1219 173 215 239
-712.813 -559.383 1222 176 217 239
-705.307 -555.263 1213 177 215 238
二、数据处理
对于以上数据,本博文介绍以下三种处理方式:
2.1 完全使用np读写
由于数据有固定统一的格式,可以直接使用numpy库里的函数进行文本数据的读写,该方式最为简单。
可直接使用np.loadtxt函数将txt里的文本数据解析为np数组,需设置数据类型(dtype=np.float32)和分隔符delimiter,本博文设置的分割符为‘→’(数据类型和分隔符可根据自己的文本数据进行调整)
利用np数组可直接进行多维度切片处理的特点b[:,3:]=b[:,3:],对第二个维度进行切片
,对rgb的数值进行归一化处理
最后使用np.savetxt函数将更改后的新数据存入新的txt文件中,需设置文件路径、要存储的对象,delimiter为存储成文本时的分割符,fmt='%0.3f'为存储的数据格式‘%0.3f’表示存储的数据格式为保留3位小数的float
#从txt文件中读取数据
b=np.loadtxt('2023_09_27_14_10_50/PointCloudxyzrgb/00000001.txt',dtype=np.float32,delimiter=' ')
b[:,3:]=b[:,3:]/255 #数组第三位,第四位,第五位分别对应r,g,b,除以255就变为了0-1之间的小数(归一化)
#更改后的新数据存入新的txt文件中
np.savetxt('2023_09_27_14_10_50/PointCloudxyzrgb/000000022.txt',b,delimiter=