Я использовал код следующим образом:
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
является трехмерным аффинным преобразованием, поэтому его translate
Член ожидает 3D вектор, а Template_centroid-model_centroid
это 4D векторов. Вы можете удалить последний однородный компонент (который, я думаю, равен 0), и получить 3D вектор, используя (...).head<3>()
,
Других решений пока нет …