PCL中可用的PointT类型

简介: PCL中可用的PointT类型:PointXYZ——成员变量:float x,y,z;     PointXYZ是使用最常见的一个点数据类型,因为他之包含三维XYZ坐标信息,这三个浮点数附加一个浮点数来满足存储对齐,可以通过points[i].

PCL中可用的PointT类型:

PointXYZ——成员变量:float x,y,z;

     PointXYZ是使用最常见的一个点数据类型,因为他之包含三维XYZ坐标信息,这三个浮点数附加一个浮点数来满足存储对齐,可以通过points[i].data[0]或points[i].x访问点X的坐标值

union
{
float data[4];
struct
{
float x;
float y;
float z;
};
};

PointXYZI——成员变量:float x,y,z,intensity

PointXYZI是一个简单的X Y Z坐标加intensity的point类型,是一个单独的结构体,并且满足存储对齐,由于point的大部分操作会把data[4]元素设置成0或1(用于变换),

不能让intensity与XYZ在同一个结构体中,如果这样的话其内容将会被覆盖,例如:两个点的点积会把第四个元素设置为0,否则点积没有意义,

union{
float data[4];
struct
{
float x;
float y;
float z;
};
};
union{
struct{
float intensity;
};
float data_c[4];
};

 PointXYZRGBA——成员变量:float x,y,z;uint32_t  rgba  除了RGBA信息被包含在一个整型变量中,其他的和PointXYZI类似

union{
float data[4];
struct
{
float x;
float y;
float z;
};
};
union{
struct{
float rgba;
};
float data_c[4];
};

PointXYZRGB——float x,y,z,rgb   除了RGB信息被包含在一个浮点数据变量中,其他的和 PointXYZRGBA

union{
float data[4];
struct
{
float x;
float y;
float z;
};
};
union{
struct{
float rgb;
};
float data_c[4];
};

PointXY——成员变量:float x,y        简单的二维x-y结构代码

struct{
float x;
float y;
};

InterestPoint——成员变量:float x,y,z,strength除了strength表示关键点的强度测量值,其他的和PointXYZI

union{
float data[4];
struct
{
float x;
float y;
float z;
};
};
union{
struct{
float strength;
};
float data_c[4];
};

Normal——成员变量:float normal[3],curvature;

另一个常用的数据类型,Normal结构体表示给定点所在样本曲面上的法线方向,以及对应曲率的测量值,例如访问法向量的第一个坐标可以通过points[i].data_n[0]或者points[i].normal[0]或者points[i]

union{
float data_n[4]
float normal[3];
struct
{
float normal_x;
float normal_y;
float normal_z;
};
};
union{
struct{
float curvature;
};
float data_c[4];
};

PointNormal——成员变量:float x,y,z;   float normal[3] ,curvature ;  PointNormal是存储XYZ数据的point结构体,并且包括了采样点的法线和曲率

union{
float data[4];
struct
{
float x;
float y;
float z;
};
};

union{
float data_n[4]
float normal[3];
struct
{
float normal_x;
float normal_y;
float normal_z;
};
};
union{
struct{
float curvature;
};
float data_c[4];
};

 未完待续***************************************88888888888

备注:关于点云库PCL的学习,可以扫描二维码关注公众号,有兴趣的可以直接在公众号回复与我交流,相互学习,

                        

相关文章
|
XML 安全 Java
自定义PMD检测的类型集合(详解)
自定义PMD检测的类型集合(详解)
自定义PMD检测的类型集合(详解)
|
2月前
|
存储 安全 编译器
【C++ 17 泛型容器对比】C++ 深度解析:std::any 与 std::variant 的细微差别
【C++ 17 泛型容器对比】C++ 深度解析:std::any 与 std::variant 的细微差别
60 1
|
4月前
|
存储 C++ 索引
C++ 标准库类型之vector类型
C++ 标准库类型之vector类型
16 0
|
4月前
|
C++
stl判断数据的类型
stl判断数据的类型
boost::any( 能存放任何类型的数据)原理
boost::any( 能存放任何类型的数据)原理
|
8月前
|
存储 C++
[Eigen中文文档] 原始缓冲区接口:Map 类
本节解释了如何使用“原始”C/C++ 数组。这在各种情况下都很有用,特别是在将向量和矩阵从其他库“导入”到 Eigen 中时。
79 0
|
8月前
|
存储 编译器 对象存储
[Eigen中文文档] 包含Eigen对象的结构体
如果定义的结构体包含固定大小的可向量化 Eigen 类型成员,则必须确保对其调用 operator new 来分配正确的对齐缓冲区。如果仅使用足够新的编译器(例如,GCC>=7、clang>=5、MSVC>=19.12)以 [c++17] 模式编译,那么编译器会自动处理所有事情,可以跳过本节。 否则,必须重载它的 operator new 以便它生成正确对齐的指针(例如,Vector4d 和 AVX 的 32 字节对齐)。幸运的是,Eigen 为提供了一个宏 EIGEN_MAKE_ALIGNED_OPERATOR_NEW 来完成这项工作。
121 0
|
10月前
|
C++
C++中vector自定义大小方式
C++vector自定义大小 1.vector指定大小(前者必须是定义vector时) vector<int>vc(5);//size为5,值默认为0  cout<<vc.size()<<endl; for(int i=0; i<vc.size(); i++)     cout<<vc[i];  vector<int>vc; vc.resize(5); //size为5,值默认为0 2.指定大小并赋相同初值(前者必须是定义vector时) vector<int>vc(5,9); //size为5,初值为9  cout<<vc.size()<<endl; for(int i=0; i<
173 0
ROS中PointCloud转换为PointCloud2类型
ROS中PointCloud转换为PointCloud2类型
308 0