我使用了以下代码:
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
有谁知道如何转换或错误的原因是什么?感谢。
答案 0 :(得分:1)
transform
是3D仿射变换,因此其translate
成员期待3D矢量,而Template_centroid-model_centroid
是4D矢量。您可以删除最后一个齐次组件(我猜是0),并使用(...).head<3>()
获取3D矢量。