if (pcl::io::loadPCDFilepcl::PointXYZ("rabbit.pcd", cloud) == -1) // load the file { PCL_ERROR("Couldn't read file test_pcd.pcd \n"); return (-1); } 调用 read (const std::string &file_name, pcl::PointCloud<PointT> &cloud, const int offset = 0) { pcl::PCLPointCloud2 blob; int pcd_version ; int res = read (file_name, blob, cloud.sensor_origin_, cloud.sensor_orientation_, pcd_version, offset) ; // If no error, convert the data if (res == 0) pcl::fromPCLPointCloud2 (blob, cloud); return (res); } loadPCDFile (const std::string &file_name, pcl::PointCloud<PointT> &cloud) { pcl::PCDReader p; return (p.read (file_name, cloud)); }上边三个函数有什么访问冲突
时间: 2024-03-30 13:34:12 浏览: 58
这三个函数并没有访问冲突,它们是 PCL 中不同的函数,各司其职,在不同的场景下使用。
`pcl::io::loadPCDFile<pcl::PointXYZ>("rabbit.pcd", cloud)` 是一个模板函数,用于从 PCD 文件中读取点云数据,并将数据存储到 `pcl::PointCloud<pcl::PointXYZ>` 类型的对象 `cloud` 中。
`pcl::io::loadPCDFile()` 函数实际上是通过调用 `pcl::PCDReader::read()` 函数来实现的。`pcl::PCDReader::read()` 函数有多个重载形式,其中一个是 `read(const std::string& file_name, pcl::PointCloud<PointT>& cloud, const int offset = 0)`,用于从文件中读取点云数据,并将数据存储到 `pcl::PointCloud<PointT>` 类型的对象 `cloud` 中。
`pcl::PCDReader::read()` 函数又会调用 `read(const std::string& file_name, pcl::PCLPointCloud2& cloud, Eigen::Vector4f& origin, Eigen::Quaternionf& orientation, int& pcd_version, const int offset = 0)` 函数来读取文件中的点云数据,并将它们存储到 `pcl::PCLPointCloud2` 类型的对象 `cloud` 中。如果读取成功,`read()` 函数会使用 `pcl::fromPCLPointCloud2()` 函数将 `pcl::PCLPointCloud2` 类型的点云数据转换为 `pcl::PointCloud<PointT>` 类型的点云数据,并将其存储到传入的 `cloud` 对象中。
因此,这三个函数是协同工作的,各自承担不同的任务,没有访问冲突。
阅读全文