我正在尝试将pcl pointXYZ转换为特征向量
Eigen::Vector4f min (minPnt.x, minPnt.y, minPnt.z);
Eigen::Vector4f max (maxPnt.x, maxPnt.y, maxPnt.z);
其中minPnt和maxPnt的类型为pcl :: PointXYZ。 但是,我得到一个错误"错误C2338:THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE" 。你能否提出一些其他方法,或者让我知道我的方法是否错误。
答案 0 :(得分:3)
请使用getVector4fMap()
获取Eigen::Vector4f
,然后使用getVector3fMap()
获取Eigen::Vector3f
Eigen::Vector3f min = minPnt.getVector4fMap();
Eigen::Vector3f max = maxPnt.getVector4fMap();
如果需要转换法线,请使用
pcl::Normal pcl_normal(0, 0, 1);
Eigen::Vector3f eigen_normal = pcl_normal.getNormalVector4fMap();
答案 1 :(得分:2)
我用以下代码解决了上述问题。
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);
如果有更好的方法,请建议。
答案 2 :(得分:1)
eigen :: vector4f正在寻找4个浮点数,但你只给它3个(x,y,z)。尝试在最后添加0:
Eigen :: Vector4f min(minPnt.x,minPnt.y,minPnt.z,0);
Eigen :: Vector4f max(maxPnt.x,maxPnt.y,maxPnt.z,0);