无需迭代即可将pcl :: PointCloud <pointxyz>快速转换为std :: vector <cv :: point3f>

时间:2018-12-14 13:52:25

标签: c++ arrays type-conversion

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

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

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

1 个答案:

答案 0 :(得分:0)

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

std::vector<cv::Point3f> points;

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