从Eigen :: Vector转换为Eigen :: Affine3f

时间:2013-08-23 12:11:35

标签: c++ eigen point-clouds

我使用了以下代码:

   Eigen::Vector4f Template_centroid;
   pcl::compute3DCentroid(*Template,Template_centroid);

   Eigen::Vector4f model_centroid;
   pcl::compute3DCentroid(model.cloud,model_centroid);

   // Transformation required to align the centroids
   Eigen::Affine3f transform(Eigen::Affine3d::Identity());
   transform.translate(Template_centroid-model_centroid);

但是当它编译翻译时,我遇到了错误:

 error: \u2018INVALID_MATRIX_PRODUCT\u2019 is not a member of \u2018Eigen::internal::static_assertion<false>\u2019

有谁知道如何转换或错误的原因是什么?感谢。

1 个答案:

答案 0 :(得分:1)

transform是3D仿射变换,因此其translate成员期待3D矢量,而Template_centroid-model_centroid是4D矢量。您可以删除最后一个齐次组件(我猜是0),并使用(...).head<3>()获取3D矢量。