Outils pour utilisateurs

Outils du site


lib:pcl

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
lib:pcl [2019/03/19 11:20] – Mise à jour de "Rotation d'un nuage" rootlib:pcl [2019/09/20 13:12] (Version actuelle) – Ajout de Eigen comme dépendance root
Ligne 1: Ligne 1:
 ===Compilation sous Windows=== ===Compilation sous Windows===
-Il est nécessaire d'avoir [[lib:flann|Flann]], [[lib:qhull|Qhull]] et [[lib:boost|Boost]] de compilé en version 64 bits, Release et Debug.+Il est nécessaire d'avoir Eigen (librairie entête), [[lib:flann|Flann]], [[lib:qhull|Qhull]] et [[lib:boost|Boost]] de compilé en version 64 bits, Release et Debug.
  
 Il faut aussi les sources de Eigen mais uniquement pour les header (compilation inutile). Il faut aussi les sources de Eigen mais uniquement pour les header (compilation inutile).
Ligne 73: Ligne 73:
 transform.prerotate(Eigen::AngleAxisf(-atan2f(diffy, diffx), Eigen::Vector3f::UnitZ())); transform.prerotate(Eigen::AngleAxisf(-atan2f(diffy, diffx), Eigen::Vector3f::UnitZ()));
 pcl::transformPointCloud(*cloud_src, *retval, transform); pcl::transformPointCloud(*cloud_src, *retval, transform);
 +</code>
 +
 +===Matrice de rotation pour aligner un axe vers un autre===
 +<code cpp>
 +Eigen::Quaternionf rotAxe;
 +rotAxe.setFromTwoVectors(Eigen::Vector3f(rotation.x_, rotation.y_, rotation.z_), Eigen::Vector3f(1, 0, 0));
 +transform.prerotate(rotAxe);
 </code> </code>
  
 ===Rotation d'un nuage=== ===Rotation d'un nuage===
 Sans les normales : Sans les normales :
-  pcl::transformPointCloud(*cloud_src, *retval, transform);+<code cpp> 
 +pcl::transformPointCloud(*cloud_src, *retval, transform); 
 +</code>
  
 Avec les normales : Avec les normales :
-  pcl::transformPointCloudWithNormals(*cloud_src, *retval, transform);+<code cpp> 
 +pcl::transformPointCloudWithNormals(*cloud_src, *retval, transform); 
 +</code> 
 + 
 +===Recherche des normales=== 
 +<code cpp> 
 +pcl::PointCloud<TYPE_POINT_PCL>::Ptr cloud_src(XXXXXXX); 
 +pcl::PointCloud<TYPE_POINT_PCL>::Ptr retval(new pcl::PointCloud<TYPE_POINT_PCL>); 
 +pcl::search::KdTree<TYPE_POINT_PCL>::Ptr tree(new pcl::search::KdTree<TYPE_POINT_PCL>()); 
 +pcl::NormalEstimation<TYPE_POINT_PCL, TYPE_POINT_PCL> ne; 
 +ne.setSearchMethod(tree); 
 +// Pour l'orientation des normales. 
 +ne.setViewPoint(0, 0, 0); 
 +ne.setInputCloud(cloud_src); 
 +// L'un ou l'autre 
 +ne.setKSearch(nombre_de_voisins); 
 +ne.setRadiusSearch(distance_des_voisins); 
 +ne.compute(*retval); 
 +</code> 
 + 
 +[[http://pointclouds.org/documentation/tutorials/normal_estimation.php|Estimating Surface Normals in a PointCloud]] Archive du 26/03/2019
lib/pcl.1552990852.txt.gz · Dernière modification : 2019/03/19 11:20 de root