Быстрое преобразование pcl :: PointCloud <PointXYZ>в std :: vectorне используя итерации - PullRequest
0 голосов
/ 14 декабря 2018

Я ищу быстрый способ преобразования облака точек PCL типа pcl::PointCloud<PointXYZ> в std::vector<cv::Point3f>.

Проблема в том, что pcl::PointXYZ состоит из 4 чисел с плавающей запятой (x, y, z, отступ), тогда как cv::Point3f имеет только 3 поплавка (x, y, z).Если бы они были всего лишь 3-мя числами с плавающей запятой, я мог бы сделать простое приведение указателя к буферу данных.

Итак, основной вопрос в основном заключается в следующем: как преобразовать массив структур с 4 числами в массив структур с 3плавает без использования итерации (то есть для циклов)?

1 Ответ

0 голосов
/ 14 декабря 2018

Если у вас есть какое-то облако точек 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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...