对PCL中build_tree.cpp的的学习与解释

对PCL中build_tree.cpp的的学习与解释

从主函数main开始阅读
首先是命令行参数,执行
$ ./build/build_tree data/
前一字符串为项目运行的所在位置,后一个字符串是pcd文件的位置
如果改在VS2017中运行,可以直接注释掉93到97行代码,并将109行的loadFeatureModels中的第一个参数直接设定为文件位置

loadFeatureModels("data/", extension, models);

第99和100行代码,添加了文件名后缀
使用std::transform大概是为了将可能存在的大写字母转换为小写字母,防止出错,但是感觉没有必要

	std::string extension(".pcd");
	transform(extension.begin(), extension.end(), extension.begin(), (int(*)(int))tolower);

也可以直接改写为

std::string extension = ".pcd";

经过验证也没有错误
102至106代码添加了一些名称和变量

	std::string kdtree_idx_file_name = "kdtree.idx";
	std::string training_data_h5_file_name = "training_data.h5";
	std::string training_data_list_file_name = "training_data.list";

	std::vector<vfh_model> models;

前三个分别是用于用于存储的kdtree序列文件名称,训练数据的h5文件名称和训练数据列表文件名称
第四个需要说明一下,是新定义的一个结构 vfh_model 在第11行

typedef std::pair<std::string, std::vector<float> > vfh_model;

该类型是以一个二元数来存储加载一个vfh模型
第一个数据类型为std::stringpath 是输入文件的路径
第二个参数类型为std::vector 是VFH模型的各直方图数据,每一个元素都代表了一个直方块

然后是函数 loadFeatureModels

void
loadFeatureModels(const boost::filesystem::path &base_dir, const std::string &extension,
	std::vector<vfh_model> &models)

第一个参数base_dir 是需要搜索的文件夹路径(不包括文件名)
第二个参数extension 是需要搜索的的文件后缀名
第三个参数models 是用存放加载得到的VFH模型

简单来说,该方法递归遍历给定文件夹路径下的所有目录和子目录,加载所有找到的PCD文件数据至模型,该方法调用loadHist,将尝试打开找到的每个PCD文件,读取其标题,并检查其是否包含VFH签名。将PCD文件名连同VFH签名存储到vfh_model数组中。
在代码中做一个简单的注释

/** \brief Load a set of VFH features that will act as the model (training data)
  * \param argc the number of arguments (pass from main ())
  * \param argv the actual command line arguments (pass from main ())
  * \param extension the file extension containing the VFH features
  * \param models the resultant vector of histogram models
  */
loadFeatureModels(const boost
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值