0

我只是想知道如何将我的 PointCloud::Ptr 引用到我的另一个 PointCloud::Ptr 而不将其复制到另一个类。

所以我有3节课:
typedef pcl::PointCloud<PointXYZ> PointCloud;

- main_program.hpp

PointCloud::Ptr cloud_original_ = ...; //I opened the pcd file
VolumeServer volume_;
volume_.setPointCloud(cloud_original_);

CutCloud process_;
process_.setPointCloud(cloud_original_);
...

- volume.hpp 有 VolumeServer 类

PointCloud::Ptr cloud_volume_;

void setPointCloud(const PointCloud::Ptr &cloud = nullptr)
{
   cloud_volume_ = cloud;
}
...

- cutCloud.hpp 有 CutCloud 类

PointCloud::Ptr cloud_process_;

void setPointCloud(const PointCloud::Ptr &cloud = nullptr)
{
   cloud_process_ = cloud;
}
void processCloud()
{
   PointCloud::Ptr new_cloud(new PointCloud);

   pcl::CropBox<PointT> cropbox;
   cropbox.setInputCloud(cloud_process_);
   cropbox.setInputCloud(cloud_process_);
   cropbox.setMin(Eigen::Vector4f(1.0, 1.0,1.0, 0));
   cropbox.setMax(Eigen::Vector4f(10.0, 10.0,10.0, 0));
   cropbox.filter(*new_cloud);
   
   *cloud_process_ = *new_cloud;
}
...

这是真的吗?我打印了他们的地址,但他们的地址与 cloud_original_ 不同。

我想让cloud_volume_involume.hppcloud_process_incutCloud.hpp指的是cloud_original_inmain_program.hpp而不复制它,只是指地址,因为我正在使用一个巨大的 pointCloud (>4GB) 和一些类。如果我正在裁剪 Cloud(使用processCloudin cutCloud.hpp),它也会裁剪 the cloud_original_(并且还会更改 ,cloud_volume_因为它指的是cloud_original_)。

提前致谢!

4

0 回答 0