Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将pcl点类型XYZ转换为特征向量4f_C++_Point Cloud Library_Eigenvector - Fatal编程技术网

C++ 将pcl点类型XYZ转换为特征向量4f

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_仅用于特定大小的向量”。你能推荐一些其他的方法吗?如果我的方法是错误的,请告诉我。我用下面的

我正在尝试将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_仅用于特定大小的向量”。你能推荐一些其他的方法吗?如果我的方法是错误的,请告诉我。

我用下面的代码解决了上述问题

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