时间计算
pcl中计算程序运行时间有很多函数,其中利用控制台的时间计算是:
首先必须包含头文件 #include <pcl/console/time.h>,其次,pcl::console::TicToc time; time.tic(); +程序段 + cout<<time.toc()/1000<<“s”<<endl;就可以以秒输出“程序段”的运行时间。
如何实现类似pcl::PointCloud::Ptr和pcl::PointCloud的两个类相互转换?
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
pcl::PointCloudpcl::PointXYZ::Ptr cloudPointer(new pcl::PointCloudpcl::PointXYZ);
pcl::PointCloudpcl::PointXYZ cloud;
cloud = *cloudPointer;
cloudPointer = cloud.makeShared();
如何查找点云的x,y,z的极值?
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/common/common.h>
pcl::PointCloudpcl::PointXYZ::Ptr cloud;
cloud = pcl::PointCloudpcl::PointXYZ::Ptr (new pcl::PointCloudpcl::PointXYZ);
pcl::io::loadPCDFilepcl::PointXYZ (“your_pcd_file.pcd”, *cloud);
pcl::PointXYZ minPt, maxPt;
pcl::getMinMax3D (*cloud, minPt, maxPt);
如果知道需要保存点的索引,如何从原点云中拷贝点到新点云?
#include <pcl/io/pcd_io.h>
#include <pcl/common/impl/io.hpp>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
pcl::PointCloudpcl::PointXYZ::Ptr cloud(new pcl::PointCloudpcl::PointXYZ);
pcl::io::loadPCDFilepcl::PointXYZ(“C:\office3-after21111.pcd”, *cloud);
pcl::PointCloudpcl::PointXYZ::Ptr cloudOut(new pcl::PointCloudpcl::PointXYZ);
std::vector indexs = { 1, 2, 5 };
pcl::copyPointCloud(*cloud, indexs, *cloudOut);
如何从点云里删除和添加点?
#include <pcl/io/pcd_io.h>
#include <pcl/common/impl/io.hpp>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
pcl::PointCloudpcl::PointXYZ::Ptr cloud(new pcl::PointCloudpcl::PointXYZ);
pcl::io::loadPCDFilepcl::PointXYZ(“C:\office3-after21111.pcd”, *cloud);
pcl::PointCloudpcl::PointXYZ::iterator index = cloud->begin();
cloud->erase(index);//删除第一个
index = cloud->begin() + 5;
cloud->erase(cloud->begin());//删除第5个
pcl::PointXYZ point = { 1, 1, 1 };
//在索引号为5的位置1上插入一点,原来的点后移一位
cloud->insert(cloud->begin() + 5, point);
cloud->push_back(point);//从点云最后面插