我只是想知道如何将我的 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.hpp
和cloud_process_
incutCloud.hpp
指的是cloud_original_
inmain_program.hpp
而不复制它,只是指地址,因为我正在使用一个巨大的 pointCloud (>4GB) 和一些类。如果我正在裁剪 Cloud(使用processCloud
in cutCloud.hpp
),它也会裁剪 the cloud_original_
(并且还会更改 ,cloud_volume_
因为它指的是cloud_original_
)。
提前致谢!