преобразование из Eigen :: Vector в Eigen :: Affine3f

Я использовал код следующим образом:

   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

Решение

transform является трехмерным аффинным преобразованием, поэтому его translate Член ожидает 3D вектор, а Template_centroid-model_centroid это 4D векторов. Вы можете удалить последний однородный компонент (который, я думаю, равен 0), и получить 3D вектор, используя (...).head<3>(),

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]