Я использовал код следующим образом:преобразования из Эйгена :: Vector в Эйген :: 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
ли кто-нибудь знать, как преобразовать или в чем причина ошибки? Благодарю.
Привет, я попробовал transform = (Template_centroid-model_centroid) .head <3>(). Но у меня все еще есть ошибка: /usr/include/eigen3/Eigen/src/Geometry/Transform.h:290:5: ошибка: неполный тип 'Eigen :: internal :: transform_construct_from_matrix, const Eigen :: Matrix , const Eigen :: Matrix >, 3, 1, false, false>, 2, 0, 3, 4, 3, 1> 'используется в вложенный идентификатор имени –
вы пытаетесь преобразовать Vector3 в аффинное преобразование. Что это значит? Либо преобразуйте его в 'Translation3f', либо вызовите .translate() или непосредственно установите часть перевода с помощью access(). – ggael