第二周PCL学习(二)

一、上周问题解决
1.1 cmake使用中的问题解决。
上一周中,使用MinGW对cpp文件进行了编译输出,但是无法更好的编译pcl文
件,上周使用的是pcl1.8.1和cmake3.17.0-rc1版本进行cmake编译,原本以
为是pcl1.8.1版本中缺少了FindBoost.cmake、FindFLANN.cmake等文件,
所以我将其换成了pcl1.9.0版本,这下文件是有了,可是还是编译错误,最后
发现是cmake版本的问题,我猜难道是Release Candidate (3.17.0-rc1),
候选的问题吗,当然只是猜想,所以我将其先行卸载,改成了3.15.6,没想
到改完之后果然可以运行了。
1.2 分享一下在检查错误途中遇到的好的解决方法

VTK.config设置出现问题
https://www.itread01.com/content/1548519671.html

Cmake调式pcl中的错误
http://unanancyowen.com/en/pcl181/

PCL调试中的各种错误
https://blog.csdn.net/weixin_38348752/article/details/88531034

PCL的安装和配置
https://blog.csdn.net/weixin_41991128/article/details/83864713

PCL可视化时遇到问题之 Error:no override found for ‘vtkPolyDataMapper’
https://blog.csdn.net/zzh_AI/article/details/88861221

1.3 pcl1.8.1中可能出现的问题

错误:
在这里插入图片描述解决方法
在这里插入图片描述~~~ 可以将124-125行的代码改成这个样子~~~

1.4 cmake调试pcl程序步骤

步骤1,编写cpp文件和CmakeLists文件,cpp文件自己编写,cmakelists的编写方法在上一周已经分享过连接
在这里插入图片描述步骤二、在编写的项目文件下,新建一个build文件,用来保存生成的cmake项目的文件
在这里插入图片描述步骤三、打开cmake-gui
在这里插入图片描述步骤四、在cmake-gui中输入,源文件目录(就是同时包含cpp文件和CmakeList的文件目录)和输出目录**(新建的build文件)**。
在这里插入图片描述步骤五:点击configure,会弹出配置框,在其同选择自己的VS版本,和x64,现在电脑也都是64位系统的。
在这里插入图片描述步骤六,配置完成后,点击"Finish",然后先点击“Configure”,当配置完成后,再点击“Generate”
在这里插入图片描述现在查看一下“build”文件下有哪些文件:
在这里插入图片描述
步骤七:点击“Open Project”,编译运行octree_search,会生成exe文件
在这里插入图片描述步骤八、在build文件中找到debug文件夹下的exe文件,在命令行中也可以运行。
在这里插入图片描述
在这里插入图片描述

二、kdtree
2.1 kdtree的原理介绍
	kdtree的原理和BST(二分查找树)相同,BST则是处理一维数据的搜索
问题,而kdtree则是可以更好的处理多维数据的搜索分类问题。原本准备自
己写一下kdtree的原理和介绍,突然看到下面这几篇别人写的文章,觉得人
家已经写的太好了。尤其是链接的第三篇,讲的十分清楚。

kdtree原理和基本介绍
转载 https://blog.csdn.net/richard9006/article/details/90058465
kdtree的特征选择(使用方差,因为方差大的数据分散的比较开,利于划分),使用python实现
转载 https://zhuanlan.zhihu.com/p/45346117

kdtree中的KNN
转载【【数学】kd 树算法之详细篇】https://zhuanlan.zhihu.com/p/23966698

2.2 pcl中kdtree介绍

pcl::KdTree<PointT> : 类Kdtree是kdtree的数据结构实现,并且是带有K近邻搜索实现的类KdTreeFLANN的基类。这里搜索要使用KdTreeFLANN(这个里面才会有k近邻),而不是kdtree中

1. 类KdTree关键成员函数:

  • KdTree (bool sorted= true) :空的构造函数
  • virtual void setlnputCloud (const PointCloudConstPtr &.cloud, canst Indices­ConstPtr &. indices= IndicesConstPtr()) :一个虚函数,设置输入点云,参数cloud为输入点云的共享指针引用,indices为在kd-tree中使用的点对应的索引,如果不设置,则默认使用整个点云填充kd-tree。
  • virtual ~KdTree () 析构函数。
  • virtual int nearestKSearch (canst PointT &.p_q, int k, std::vector< int>&. k_indices, std: :vector&.k_sqr_distances) const =0:纯虚函数,具体实现在其子类KdTreeFLANN中,其用来进行K 邻域搜索,参数p_q为需要查询的点,K为K 邻域个数,k_indices为搜索完的邻域点对应的索引, k_sqr_distances为搜索完的每个邻域点与查询点之间的欧氏距离。
  • virtual int nearestKSearch (canst PointCloud &.cloud, int index, int k, std:: vector&.k_indices, std: :vector< float >&.k_sqr_distances) const=0 :纯虚函数,具体实现在其子类KdTreeFLANN中,参数cloud为需要查询的点集合 ,index为点集合中需要查询点的索引,其他参数同上。
  • virtual int nearestKSearch (int index, int k, std: :vector< int >&.k_indices, std: :vector&.k_sqr_distances) const =0: 纯虚函数,具体实现在其子类KdTreeFLANN中,其用来进行K 邻域搜索,参数index为点云中需要查询点的索引,其他参数同上。
  • virtual int radiusSearch (const PointT &.p_q, double radius, std: :vector< int >&.k_indices,std: :vector< float >&.k_sqr_distances, unsigned int max_nn = O) const = 0 : 纯虚函数,具体实现在其子类KdTreeFLANN中,其用来进行r半径内的邻域搜索,参数p_q为需要查询的点,radius为需要查询的半径大小,k_indices为搜索完的邻域点对应的索引, k_sqr_distances为搜索完的每个邻域点与查询点之间的欧氏距离,max_nn为设置返回的邻域个数上限,如果为0或者大千返回的邻域个数,其返回
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值