C++ 将pcl点类型XYZ转换为特征向量4f
我正在尝试将pcl pointXYZ转换为特征向量C++ 将pcl点类型XYZ转换为特征向量4f,c++,point-cloud-library,eigenvector,C++,Point Cloud Library,Eigenvector,我正在尝试将pcl pointXYZ转换为特征向量 Eigen::Vector4f min (minPnt.x, minPnt.y, minPnt.z); Eigen::Vector4f max (maxPnt.x, maxPnt.y, maxPnt.z); 其中,minPnt和maxPnt的类型为pcl::PointXYZ。 但是,我得到了一个错误“error C2338:THIS_METHOD_仅用于特定大小的向量”。你能推荐一些其他的方法吗?如果我的方法是错误的,请告诉我。我用下面的
Eigen::Vector4f min (minPnt.x, minPnt.y, minPnt.z);
Eigen::Vector4f max (maxPnt.x, maxPnt.y, maxPnt.z);
其中,minPnt和maxPnt的类型为pcl::PointXYZ。
但是,我得到了一个错误“error C2338:THIS_METHOD_仅用于特定大小的向量”。你能推荐一些其他的方法吗?如果我的方法是错误的,请告诉我。我用下面的代码解决了上述问题
auto x_min = static_cast<float>(minPnt.x);
auto y_min = static_cast<float>(minPnt.y);
auto z_min = static_cast<float>(minPnt.z);
auto x_max = static_cast<float>(maxPnt.x);
auto y_max = static_cast<float>(maxPnt.y);
auto z_max = static_cast<float>(maxPnt.z);
Eigen::Vector4f min(x_min, y_min, z_min, 0.0);
Eigen::Vector4f max(x_max, y_max, z_max, 0.0);
auto x_min=static_cast(minPnt.x);
自动y_最小=静态_投射(最小Pnt.y);
auto z_min=静态_cast(minPnt.z);
auto x_max=静态_cast(maxPnt.x);
自动y_最大=静态_投射(maxPnt.y);
自动z_max=静态_cast(maxPnt.z);
本征:向量4f min(x_min,y_min,z_min,0.0);
向量4f max(x_max,y_max,z_max,0.0);
如果有更好的方法,请建议。
eigen::Vector4f
正在寻找4个浮点数,但您只给出了3(x,y,z)。尝试在末尾添加一个0:
向量4f min(minPnt.x,minPnt.y,minPnt.z,0);
向量4f max(maxPnt.x,maxPnt.y,maxPnt.z,0);
请使用
getVector4fMap()
获取eigent::Vector4f
并使用getVector3fMap()
获取eigent::Vector3f
例如:
PointT pcl_pt=。。。;
特征::Vector3f e_v3f_pt=pcl_pt.getVector3fMap();
特征::Vector4f e_v4f_pt=pcl_pt.getVector4fMap();
如果您拥有的是pcl::Normal
,您可以尝试使用getNormalVector4fMap
,如下所示
pcl::Normal pcl_Normal(0,0,1);
特征::Vector4f特征值_normal=pcl_normal.getNormalVector4fMap();
如果使用(x,y,z,w)坐标,则为1