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/06 14:38] – Ajout de "Compilation sous Windows" 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 33: Ligne 33:
 CUDA_ARCH_BIN 3.0 5.2 7.5 garder le dernier, une version intermédiaire et le tout premier. Ca permet d’économiser un gros temps de compilation. (avant : 3.0 3.5 5.0 5.2 5.3 6.0 6.1 7.0 7.2 7.5) CUDA_ARCH_BIN 3.0 5.2 7.5 garder le dernier, une version intermédiaire et le tout premier. Ca permet d’économiser un gros temps de compilation. (avant : 3.0 3.5 5.0 5.2 5.3 6.0 6.1 7.0 7.2 7.5)
 Boost_INCLUDE_DIR ...\Sources\boost\boost.install\include\boost-1_69 Boost_INCLUDE_DIR ...\Sources\boost\boost.install\include\boost-1_69
-Boost_*_LIBRARY_RELEASE et Boost_*_LIBRARY_DEBUG C:\Users\vlegarrec\Desktop\Vilebrequin\Sources\boost\build.install\lib\*.lib Les .lib contenant -sgd dont la version de debug.+Boost_*_LIBRARY_RELEASE et Boost_*_LIBRARY_DEBUG ...\Sources\boost\build.install\lib\*.lib Les .lib contenant -sgd dont la version de debug.
 BUILD_CUDA à true BUILD_CUDA à true
 BUILD_GPU à true BUILD_GPU à true
Ligne 66: Ligne 66:
   ...\Sources\boost\build.install\lib   ...\Sources\boost\build.install\lib
  
 +===Appliquer des translations et rotations successives===
 +Quand on veut appliquer des modifications successives, il faut inverser les multiplications de matrices : $M = R_2 * T_1$
 +<code cpp>
 +Eigen::Affine3f transform = Eigen::Affine3f::Identity();
 +transform.pretranslate(Eigen::Vector3f(-parametres.GetPoint0().x_, -parametres.GetPoint0().y_, -parametres.GetPoint0().z_));
 +transform.prerotate(Eigen::AngleAxisf(-atan2f(diffy, diffx), Eigen::Vector3f::UnitZ()));
 +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>
 +
 +===Rotation d'un nuage===
 +Sans les normales :
 +<code cpp>
 +pcl::transformPointCloud(*cloud_src, *retval, transform);
 +</code>
 +
 +Avec les normales :
 +<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.1551879510.txt.gz · Dernière modification : de root