Преобразувайте pcl тип точка XYZ в собствен вектор 4f

Опитвам се да конвертирам pcl pointXYZ в собствен вектор

Eigen::Vector4f min (minPnt.x, minPnt.y, minPnt.z);  
Eigen::Vector4f max (maxPnt.x, maxPnt.y, maxPnt.z);

където minPnt и maxPnt са от тип pcl::PointXYZ. Въпреки това получавам грешка като "грешка C2338: THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE" . Бихте ли предложили някои други подходи или да ме уведомите, ако подходът ми е грешен.


person Launa    schedule 18.05.2015    source източник


Отговори (3)


Моля, използвайте getVector4fMap(), за да получите Eigen::Vector4f и използвайте getVector3fMap(), за да получите Eigen::Vector3f

Пример:

PointT pcl_pt = ...;
Eigen::Vector3f e_v3f_pt = pcl_pt.getVector3fMap();
Eigen::Vector4f e_v4f_pt = pcl_pt.getVector4fMap();

Ако това, което имате, е pcl::Normal, можете да опитате да използвате getNormalVector4fMap, както е показано по-долу

pcl::Normal pcl_normal(0, 0, 1);
Eigen::Vector4f eigen_normal = pcl_normal.getNormalVector4fMap();
person Ardiya    schedule 03.04.2019

Реших горния проблем със следния код.

auto x_min = static_cast<float>(minPnt.x); 
auto y_min = static_cast<float>(minPnt.y); 
auto z_min = static_cast<float>(minPnt.z); 

auto x_max = static_cast<float>(maxPnt.x); 
auto y_max = static_cast<float>(maxPnt.y); 
auto z_max = static_cast<float>(maxPnt.z); 

Eigen::Vector4f min(x_min, y_min, z_min, 0.0); 
Eigen::Vector4f max(x_max, y_max, z_max, 0.0); 

Ако има по-добър подход, моля, предложете.

person Launa    schedule 18.05.2015

eigen::Vector4f търси 4 плаващи числа, но вие сте му дали само 3 (x, y, z). опитайте да добавите 0 в края:

Eigen::Vector4f min (minPnt.x, minPnt.y, minPnt.z, 0);  
Eigen::Vector4f max (maxPnt.x, maxPnt.y, maxPnt.z, 0);
person mobooya    schedule 19.01.2016
comment
Или 1, ако използвате (x,y,z,w) координати - person Epic Wink; 30.05.2017