002:pcl 点云投影

002:pcl 点云投影,第1张

概述1.首先包含的对应的ModelCoefficients.h以及filter中向平面投影的project_inlier.h #include <iostream>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>#include <pcl/ModelCoefficients.h>#include <pcl/filters/pr

1.首先包含的对应的ModelCoefficIEnts.h以及filter中向平面投影的project_inlIEr.h@H_419_9@

#include <iostream>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>#include <pcl/ModelCoefficIEnts.h>#include <pcl/filters/project_inlIErs.h>

2.创建点云对象指针并初始化,输出到屏幕@H_419_9@

/2.初始化该对象? cloud->wIDth? = 5;//对于未组织的点云的相当于points个数? cloud->height = 1; //对未组织的点云指定为1? cloud->points.resize (cloud->wIDth * cloud->height); //修剪或追加值初始化的元素? for (size_t i = 0; i < cloud->points.size (); ++i)? {??? cloud->points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);??? cloud->points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);??? cloud->points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);? }? // 3.cerr 输出对象放置刷屏? std::cerr << "Cloud before projection: " << std::endl;? for (size_t i = 0; i < cloud->points.size (); ++i)??? std::cerr << "??? " << cloud->points[i].x << " " ??????????????????????? << cloud->points[i].y << " " ??????????????????????? << cloud->points[i].z << std::endl;
//投影前点`Cloud before projection:    1.28125 577.094 197.938    828.125 599.031 491.375    358.688 917.438 842.563    764.5 178.281 879.531    727.531 525.844 311.281

3.设置ModelCoefficIEnts值。在这种情况下,我们使用一个平面模型,其中ax + by + cz + d = 0,其中a = b = d = 0,c = 1,或者换句话说,XY平面@H_419_9@

? // 4.创建一个系数为X=Y=0,Z=1的平面? pcl::ModelCoefficIEnts::Ptr coefficIEnts (new pcl::ModelCoefficIEnts ());? coefficIEnts->values.resize (4);? coefficIEnts->values[0] = coefficIEnts->values[1] = 0;? coefficIEnts->values[2] = 1.0;? coefficIEnts->values[3] = 0;

4.通过该滤波将所有的点投影到创建的平面上,并输出结果
** 注意这里在使用的时候再创建滤波后对象不规范,应该放在程序开始的时候**@H_419_9@

? //5.创建滤波后对象,并通过滤波投影,并显示结果? pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_projected(new pcl::PointCloud<pcl::PointXYZ>);? // 创建滤波器对象? pcl::ProjectInlIErs<pcl::PointXYZ> proj;? proj.setModelType (pcl::SACMODEL_PLANE);? proj.setinputCloud (cloud);? proj.setModelCoefficIEnts (coefficIEnts);? proj.filter (*cloud_projected);? std::cerr << "Cloud after projection: " << std::endl;? for (size_t i = 0; i < cloud_projected->points.size (); ++i)??? std::cerr << "??? " << cloud_projected->points[i].x << " " ??????????????????????? << cloud_projected->points[i].y << " " ??????????????????????? << cloud_projected->points[i].z << std::endl;? return (0);
//投影后点Cloud before projection:    1.28125 577.094 197.938    828.125 599.031 491.375    358.688 917.438 842.563    764.5 178.281 879.531    727.531 525.844 311.281Cloud after projection:    1.28125 577.094 0    828.125 599.031 0    358.688 917.438 0    764.5 178.281 0    727.531 525.844 0

6.参考网址
pcl官网例程
all-in_one 中的有API 以及例子,但是具体理论说明还是参考官网吧!
...\PCL-1.8.1-AllinOne-msvc2017-win64(1)\share\doc\pcl-1.8\tutorials\sources中 例子要比pcl入门精通要全@H_419_9@ 总结

以上是内存溢出为你收集整理的002:pcl 点云投影全部内容,希望文章能够帮你解决002:pcl 点云投影所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1210136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存