快速将 pcl::P ointCloud<PointXYZ> 转换为 std::vector<cv::P oint3f>无需迭代



我正在寻找一种将类型为pcl::PointCloud<PointXYZ>的PCL点云转换为std::vector<cv::Point3f>的快速方法。

问题是pcl::PointXYZ由4个浮点(x,y,z,padding(组成,而cv::Point3f只有3个浮点(x,y,z(。如果它们都只有3个浮点,我可以对数据缓冲区进行简单的指针强制转换。

因此,基本上的问题是:如何在不使用迭代的情况下将具有4个浮点的结构数组转换为具有3个浮点的结构化数组(即循环(?

如果你有一些点云pcl::PointCloud<pcl::PointXYZ> cloud,并且你想创建一个包含OpenCV类型cv::Point3f的点向量,只需使用基于范围的循环,如下所示:

std::vector<cv::Point3f> points;
for (const auto& point : cloud) {
points.push_back(cv::Point3f(point.x, point.y, point.z));
}

最新更新