python+cloudcompare 批量为点云增加曲率和粗糙度通道

数据展示:

将点云转换从kitti格式转换到pcd格式(目的是为了让CloudCompare方便读入)

批量转换脚本kitti2pcd.py

import numpy as np
import struct
import sys
import open3d as o3d
import fire
import os 

def bin_to_pcd(binFileName):
    size_float = 4
    list_pcd = []
    with open(binFileName, "rb") as f:
        byte = f.read(size_float * 4)
        while byte:
            x, y, z, intensity = struct.unpack("ffff", byte)
            list_pcd.append([x, y, z])
            byte = f.read(size_float * 4)
    np_pcd = np.asarray(list_pcd)
    pcd = o3d.geometry.PointCloud()
    pcd.points = o3d.utility.Vector3dVector(np_pcd)
    return pcd

def convert_single(binFileName, pcdFileName):
    pcd = bin_to_pcd(binFileName)
    o3d.io.write_point_cloud(pcdFileName, pcd)

def convert(binFileFolder,pcdFileFolder):
    for root,dirs,files in os.walk(binFileFolder):
        for file_ in files:
            binFileName = os.path.join(root,file_)
            pcdFileName = os.path.join(pcdFileFolder,file_.replace("bin","pcd"))
            convert_single(binFileName,pcdFileName)
            
if __name__ == "__main__":
    fire.Fire()

具体使用方法,指定好目标路径和存储路径,脚本走起

python kitti2pcd.py convert D:\\velodyne D:\\velodyne_pcd

使用cloudcompare commandline 与 python脚本 从当前的工具中创建新的标量域(生成txt数据)

将上一步转换好的点云取一个放到cloudcompare中,确定下计算曲率和粗糙度的参数
使用这条命令进行高斯曲率和粗糙度的生成

CloudCompare.exe -SILENT -AUTO_SAVE OFF -O D:\\velodyne_pcd\\000001.pcd -ROUGH 6.0 -CURV GAUSS 6.0 -C_EXPORT_FMT PCD -SAVE_CLOUDS FILE "D:\\velodyne_pcd\\dst\\000001.pcd"

批量进行转换的脚本batch_convert.py

import os
import subprocess
import fire
def singleprocess(srcfile,dstfile):
    command_line = "CloudCompare.exe -SILENT -AUTO_SAVE OFF -O " + srcfile + " -ROUGH 20.0 -CURV GAUSS 20.0 -C_EXPORT_FMT ASC -SAVE_CLOUDS FILE " + dstfile.replace("pcd",'txt')
    process = subprocess.Popen(command_line)
    process.wait()
 
    print(srcfile,'done')
def convert(srcfilefolder, dstfilefolder):
    for root,dirs,files in os.walk(srcfilefolder):
        for file_ in files:
            srcFileName = os.path.join(root,file_)
            dstFileName = os.path.join(dstfilefolder,file_)
            singleprocess(srcFileName,dstFileName)
if __name__ == "__main__":
    fire.Fire()

批量转换脚本走起

python batch_convert.py convert d:\\velodyne_pcd d:\\velodyne_dst
在这里插入图片描述

将生成的数据转换到kitti格式(转换成原来的格式,方便进行后续例如深度学习的处理)

脚本名字 ascii2bin.py

import os
import numpy as np
dst_folder = "d:\\velodyne_c_r" 
src_folder = "d:\\velodyne_dst"
for root,dirs,files in os.walk(src_folder):
    for f in files:
        if 'pcd' in f:
            continue
        # load into numpy array
        a_f = os.path.join(src_folder,f)
        d_f = os.path.join(dst_folder,f.replace('.txt','.pcd'))
        file_data = np.loadtxt(a_f,dtype=np.float32 ,encoding='latin-1')
        # save to target file
        file_data.reshape(-1,5).astype(np.float32)
        file_data.tofile(d_f)
        print(f,"done")

        

脚本走起

python ascii2bin.py
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[2\]中提到的命令,使用CloudCompare计算点粗糙度可以通过以下步骤进行: 1. 将点数据转换为CloudCompare支持的格式。 2. 打开CloudCompare软件,并将转换好的点导入到软件中。 3. 在CloudCompare中选择计算粗糙度的参数,其中包括内核大小,即以每个点为中心的球体半径。 4. 运行计算粗糙度的命令,可以使用以下命令进行高斯曲率粗糙度的生成: CloudCompare.exe -SILENT -AUTO_SAVE OFF -O \[点文件路径\] -ROUGH \[粗糙度参数\] -CURV GAUSS \[高斯曲率参数\] -C_EXPORT_FMT PCD -SAVE_CLOUDS FILE "\[保存路径\]" 其中,\[点文件路径\]是转换好的点文件的路径,\[粗糙度参数\]和\[高斯曲率参数\]是用于计算粗糙度和高斯曲率的参数值,"\[保存路径\]"是计算结果保存的路径。 请注意,这只是使用CloudCompare计算点粗糙度的一种方法,还有其他方法可以使用PCL、Open3D和Matlab等工具进行计算。 #### 引用[.reference_title] - *1* *3* [CloudCompare——计算点粗糙度](https://blog.csdn.net/qq_36686437/article/details/121436593)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python+cloudcompare 批量为点增加曲率粗糙通道](https://blog.csdn.net/weixin_38060850/article/details/130086649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值