点云库pcl适合什么专业的人学习

PCL点云库增加自定义数据类型-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
PCL点云库增加自定义数据类型
来源:互联网 更新时间: 8:08:47 责任编辑:鲁晓倩字体:
#include &pcl/filters/passthrough.h&
#include &pcl/filters/impl/passthrough.hpp&
// the rest of the code goes here
如果你的代码是库的一部分,可以被他人使用,需要为你自己的MyPointType类型进行显示实例化。
下面的代码段创建了包含XYZ数据的新point类型,连同一个的test的浮点型数据,这样满足存储对齐。
#include &pcl/point_types.h&
#include &pcl/point_cloud.h&
#include &pcl/io/pcd_io.h&
struct MyPointType
//定义点类型结构
PCL_ADD_POINT4D;
// 该点类型有4个元素
EIGEN_MAKE_ALIGNED_OPERATOR_NEW// 确保new操作符对齐操作
}EIGEN_ALIGN16;// 强制SSE对齐
POINT_CLOUD_REGISTER_POINT_STRUCT(MyPointType,// 注册点类型宏
(float,x,x)
(float,y,y)
(float,z,z)
(float,test,test)
main(int argc,char** argv)
pcl::PointCloud&MyPointType&
cloud.points.resize(2);
cloud.width=2;
cloud.height=1;
cloud.points[0].test=1;
cloud.points[1].test=2;
cloud.points[0].x=cloud.points[0].y=cloud.points[0].z=0;
cloud.points[1].x=cloud.points[1].y=cloud.points[1].z=3;
pcl::io::savePCDFile("test.pcd",cloud);
转: & http://www.pclcn.org/study/shownews.php?lang=cn&id=286
相关文章:
上一篇文章:下一篇文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号&&&&点云库PCL学习教程1
点云库PCL学习教程1
电子版《点云库PCL学习教程》上部分内容
嵌到我的页面
<input type="text" readonly="true" value="">
若举报审核通过,可奖励20下载分
被举报人:
chengbang1234
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
开发技术下载排行PCL学习(1)
刚入门学习PCL点云库,有些基础东西比较茫然。比如已经存在由RGB-D sensor获取的rgb image和depth image,如何将其转化为点云。下面,以比较通用的点云类型pcl::PointXYZRGB为例,讲述如何获取对应的点云数据。
pcl::PointCloud::Ptr depth2cloud( cv::Mat rgb_image, cv::Mat depth_image )
float f = 570.3;
float cx = 320.0, cy = 240.0;
pcl::PointCloud&pcl::PointXYZRGB&::Ptr cloud_ptr( new
pcl::PointCloud&pcl::PointXYZRGB& () );
cloud_ptr-&width
= rgb_image.
cloud_ptr-&height = rgb_image.
cloud_ptr-&is_dense =
for ( int y = 0; y & rgb_image. ++ y ) {
for ( int x = 0; x & rgb_image. ++ x ) {
pcl::PointXYZRGB
if ( depth_image.at&unsigned short&(y, x) != 0 )
pt.z = depth_image.at&unsigned short&(y, x)/1000.0;
pt.x = (x-cx)*pt.z/f;
pt.y = (y-cy)*pt.z/f;
pt.r = rgb_image.at&cv::Vec3b&(y, x)[2];
pt.g = rgb_image.at&cv::Vec3b&(y, x)[1];
pt.b = rgb_image.at&cv::Vec3b&(y, x)[0];
cloud_ptr-&points.push_back( pt );
pt.x = std::numeric_limits&float&::quiet_NaN();
pt.y = std::numeric_limits&float&::quiet_NaN();
pt.z = std::numeric_limits&float&::quiet_NaN();
pt.r = rgb_image.at&cv::Vec3b&(y, x)[2];
pt.g = rgb_image.at&cv::Vec3b&(y, x)[1];
pt.b = rgb_image.at&cv::Vec3b&(y, x)[0];
cloud_ptr-&points.push_back( pt );
return cloud_
上面是一个函数,输入是rgb image和depth image,输出是一个指向pcl::PointXYZRGB类型点云的boost指针。这里需要说明的是,由于我在通过RGB-D sensor获取rgb image和depth image时,将深度缺失的像素位置对应的深度设置为0,故在转换函数中,我是通过深度值是否为0进行深度缺失判断的,读者可以根据自己的数据进行相应的修改,主要是为了区分深度缺失与否,影响不大。
int main(int argc,char* argv[])
image=cv::imread(argv[1]);
depth=cv::imread(argv[2]);
if(!image.data||!depth.data)
return -1;
pcl::PointCloud&pcl::PointXYZRGB&::Ptr cloud (new pcl::PointCloud&pcl::PointXYZRGB&);
cloud=depth2cloud(image,depth);
由于我是在ubuntu下进行的实验,所以对于pcl配置没怎么花太多精力(主要是之前在windows下,几次配置都不成功,也就转为ubuntu了,感觉还是比较方便的。)
CMakeLists.txt
由于直接复制粘贴,文本显示会有问题,我就索性直接截图给大家看了。总的代码就交代完全了,如果读者对ubuntu下编译程序不是特别清楚,可以百度搜索参考资料《Cmake 实践》。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16421次
积分:1466
积分:1466
排名:千里之外
原创:121篇
(1)(6)(8)(3)(9)(20)(10)(7)(3)(16)(30)(5)(5)(1)(2)点云文件的打开。
#include &pcl/point_types.h&
#include &pcl/common/common.h&
#include &pcl/point_cloud.h&
#include &pcl/io/pcd_io.h&
#include&stdlib.h&
int main(int argc, char** argv)
pcl::PointCloud&pcl::PointXYZ&::P
cloud = pcl::PointCloud&pcl::PointXYZ&::Ptr(new pcl::PointCloud&pcl::PointXYZ&);
pcl::io::loadPCDFile&pcl::PointXYZ&(&d:\\points.pcd&, *cloud);
pcl::PointXYZ minPt, maxPt;
pcl::getMinMax3D(*cloud, minPt, maxPt);
std::cout && &Max x: & && maxPt.x && std::
std::cout && &Max y: & && maxPt.y && std::
std::cout && &Max z: & && maxPt.z && std::
std::cout && &Min x: & && minPt.x && std::
std::cout && &Min y: & && minPt.y && std::
std::cout && &Min z: & && minPt.z && std::
system(&pause&);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:19643次
排名:千里之外
原创:36篇
(1)(2)(1)(7)(1)(2)(1)(1)(2)(1)(1)(3)(14)(1)

我要回帖

 

随机推荐