Configuration de la bibliothèque de nuages de points PCL1.11.1 dans l'environnement Win10+VS2019 (super détaillé)

Configuration de la bibliothèque de nuages ​​de points PCL1.11.1 dans l'environnement Win10+VS2019 (super détaillé)

1. Téléchargez PCL1.11.1 depuis le site officiel

Recherchez les versions dans le github de la bibliothèque de nuages ​​de points PCL. Adresse de téléchargement : https://github.com/PointCloudLibrary/pcl/releases
Insérer la description de l'image ici
. Téléchargez ces trois fichiers. Le processus de téléchargement peut être lent. Il a été téléchargé ici et peut être téléchargé sur Baidu. Le disque réseau peut être extrait tout seul.

Lien : https://pan.baidu.com/s/1y1MkpTzp5F_2mtabRrYH9A
Code d'extraction : 1rh4

2. Installez PCL1.11.1

1. Ouvrez le fichier téléchargé « PCL-1.11.1-AllInOne-msvc2019-win64.exe »
Insérer la description de l'image ici
(1) Sélectionnez le second, ajoutez automatiquement des variables d'environnement et créez un raccourci sur le bureau en bas.
Si le processus d'installation indique que la variable d'environnement ne peut pas être ajoutée, vous devez l'ajouter manuellement. La méthode d'ajout manuel sera présentée plus tard.
Insérer la description de l'image ici
(2) Sélectionnez le répertoire d'installation et essayez de ne pas installer sur le lecteur C. Le chemin que j'ai défini ici est : H:\PCL\PCL 1.11.1
N'oubliez pas votre emplacement d'installation !
Insérer la description de l'image ici
(3) Cliquez ensuite sur « Suivant » puis sur « Installer ».
Insérer la description de l'image ici

[Remarque] : La fenêtre d'installation d'OpenNI2 apparaîtra pendant le processus d'installation. Installez OpenNI2 dans le fichier 3rdParty de PCL. La sélection du chemin est : H:\PCL\PCL 1.11.1\3rdParty\OpenNI2.

(4) Une fois l'installation terminée, le contenu du dossier PCL est le suivant :
Insérer la description de l'image ici
Le contenu du dossier OpenNI2 est le suivant :
Insérer la description de l'image ici

(5) Enfin, décompressez le contenu du fichier « pcl-1.11.1-pdb-msvc2019-win64.zip » et copiez-le dans le fichier « H:\PCL\PCL 1.11.1\bin ».
Insérer la description de l'image ici
À ce stade, le processus d'installation se termine.

2. Configurez les variables d'environnement.
Si le processus d'installation affiche « Impossible d'ajouter des variables d'environnement car le chemin est trop long », vous devez ajouter les variables d'environnement manuellement.
Faites un clic droit sur cet ordinateur et sélectionnez « Propriétés », ouvrez « Paramètres système avancés » et sélectionnez « Variables d'environnement ».
Insérer la description de l'image ici
(1) Comme on peut le voir dans les variables système, le répertoire racine de PCL et le répertoire d'OpenNI2 ont été ajoutés.
Insérer la description de l'image ici
Sinon, ajoutez-le manuellement. Notez que le chemin est cohérent avec le chemin d'installation que vous avez défini.
Insérer la description de l'image ici
Insérer la description de l'image ici

(2) Double-cliquez ensuite sur "Chemin" dans les variables système et ajoutez le chemin suivant à la variable d'environnement. (Selon vos propres paramètres de chemin d'installation)
Insérer la description de l'image ici
Le contenu supplémentaire spécifique est le suivant :

H:\PCL\PCL 1.11.1\bin
H:\PCL\PCL 1.11.1\3rdParty\FLANN\bin
H:\PCL\PCL 1.11.1\3rdParty\VTK\bin
H:\PCL\PCL 1.11.1\3rdParty\Qhull\bin
H:\PCL\PCL 1.11.1\3rdParty\OpenNI2\Tools
%OPENNI2_REDIST64%
%OPENNI2_LIB64%
%OPENNI2_INCLUDE64%

Après avoir ajouté les variables d'environnement, redémarrez l'ordinateur.

3. Configurez l'environnement de développement dans VS2019

1. Créez un nouveau projet vide,
Insérer la description de l'image ici
définissez le nom du projet et le chemin de stockage, puis cliquez sur « OK ».

(1) Après la création, sélectionnez Debug pour la configuration de la solution et x64 pour la plateforme de solution.
Insérer la description de l'image ici
(2) Créez ensuite un nouveau fichier source .cpp dans le fichier source.
Insérer la description de l'image ici
2. Définissez les propriétés.
Cliquez avec le bouton droit sur le projet et sélectionnez "Propriétés"
Insérer la description de l'image ici
(1) Sélectionnez d'abord "Debug" pour la configuration et "x64" pour la plate-forme, puis sélectionnez Propriétés de configuration – Débogage – Environnement. Sélectionnez Modifier
Insérer la description de l'image ici
dans l'environnement et ajoutez le contenu suivant.
Insérer la description de l'image ici
Insérer la description de l'image ici
Le contenu spécifique est le suivant :

H:\PCL\PCL 1.11.1\bin;
H:\PCL\PCL 1.11.1\3rdParty\FLANN\bin;
H:\PCL\PCL 1.11.1\3rdParty\VTK\bin;
H:\PCL\PCL 1.11.1\3rdParty\OpenNI2\Tools

(2) Sélectionnez ensuite "Langue" en C++, remplacez "Conforme au modèle" par "Non",
Insérer la description de l'image ici
continuez à sélectionner "Toutes les options" en C++, remplacez "SDL Check" par "Non"
Insérer la description de l'image ici
(3) Sélectionnez "Property Manager" ” , faites un clic droit dans « Debug|x64 » et sélectionnez « Ajouter une nouvelle feuille de propriétés de projet ».
Insérer la description de l'image ici
Nommez-le "PCL1.11.1" et sélectionnez l'emplacement de stockage, afin de pouvoir choisir directement de modifier les propriétés de la configuration de l'environnement à l'avenir.
Insérer la description de l'image ici
Après l'ajout, double-cliquez pour ouvrir la page de propriétés et démarrer la configuration.
Insérer la description de l'image ici
(4) Sélectionnez « Inclure le répertoire » dans le répertoire VC++, cliquez sur Modifier et ajoutez 7 contenus.
Insérer la description de l'image ici
Insérer la description de l'image ici
Le contenu spécifique est le suivant :

H:\PCL\PCL 1.11.1\include\pcl-1.11
H:\PCL\PCL 1.11.1\3rdParty\Boost\include\boost-1_74
H:\PCL\PCL 1.11.1\3rdParty\Eigen\eigen3
H:\PCL\PCL 1.11.1\3rdParty\FLANN\include
H:\PCL\PCL 1.11.1\3rdParty\OpenNI2\Include
H:\PCL\PCL 1.11.1\3rdParty\Qhull\include
H:\PCL\PCL 1.11.1\3rdParty\VTK\include\vtk-8.2

(5) Sélectionnez "Répertoire de la bibliothèque" dans le répertoire VC++, cliquez sur Modifier et ajoutez 6 contenus.
Insérer la description de l'image ici
Insérer la description de l'image ici
Le contenu spécifique est le suivant :

H:\PCL\PCL 1.11.1\lib
H:\PCL\PCL 1.11.1\3rdParty\Boost\lib
H:\PCL\PCL 1.11.1\3rdParty\FLANN\lib
H:\PCL\PCL 1.11.1\3rdParty\OpenNI2\Lib
H:\PCL\PCL 1.11.1\3rdParty\Qhull\lib
H:\PCL\PCL 1.11.1\3rdParty\VTK\lib

(6) Sélectionnez « Préprocesseur » en C/C++, sélectionnez « Définition du préprocesseur », cliquez sur Modifier et ajoutez du contenu.
Insérer la description de l'image ici
Insérer la description de l'image ici
Le contenu spécifique est le suivant :

_SCL_SECURE_NO_WARNINGS
_CRT_SECURE_NO_WARNINGS

(7) Remplacez « SDL Check » pour toutes les options en C/C++ par « Non ».
Insérer la description de l'image ici
(8) Sélectionnez « Entrée » dans le connecteur, sélectionnez « Dépendances supplémentaires », cliquez sur Modifier et ajoutez du contenu.
Insérer la description de l'image ici
Le contenu ajouté est le fichier lib dans le répertoire racine PCL (H:\PCL\PCL 1.11.1\lib) et le fichier lib dans PCL\3rdParty\VTK (H:\PCL\PCL 1.11.1\3rdParty\VTK\ lib) , le nom de fichier de la version de débogage a le suffixe "-gd".
Insérer la description de l'image ici
Le contenu spécifique est le suivant :

pcl_commond.lib
pcl_featuresd.lib
pcl_filtersd.lib
pcl_iod.lib
pcl_io_plyd.lib
pcl_kdtreed.lib
pcl_keypointsd.lib
pcl_mld.lib
pcl_octreed.lib
pcl_outofcored.lib
pcl_peopled.lib
pcl_recognitiond.lib
pcl_registrationd.lib
pcl_sample_consensusd.lib
pcl_searchd.lib
pcl_segmentationd.lib
pcl_stereod.lib
pcl_surfaced.lib
pcl_trackingd.lib
pcl_visualizationd.lib
vtkChartsCore-8.2-gd.lib
vtkCommonColor-8.2-gd.lib
vtkCommonComputationalGeometry-8.2-gd.lib
vtkCommonCore-8.2-gd.lib
vtkCommonDataModel-8.2-gd.lib
vtkCommonExecutionModel-8.2-gd.lib
vtkCommonMath-8.2-gd.lib
vtkCommonMisc-8.2-gd.lib
vtkCommonSystem-8.2-gd.lib
vtkCommonTransforms-8.2-gd.lib
vtkDICOMParser-8.2-gd.lib
vtkDomainsChemistry-8.2-gd.lib
vtkDomainsChemistryOpenGL2-8.2-gd.lib
vtkdoubleconversion-8.2-gd.lib
vtkexodusII-8.2-gd.lib
vtkexpat-8.2-gd.lib
vtkFiltersAMR-8.2-gd.lib
vtkFiltersCore-8.2-gd.lib
vtkFiltersExtraction-8.2-gd.lib
vtkFiltersFlowPaths-8.2-gd.lib
vtkFiltersGeneral-8.2-gd.lib
vtkFiltersGeneric-8.2-gd.lib
vtkFiltersGeometry-8.2-gd.lib
vtkFiltersHybrid-8.2-gd.lib
vtkFiltersHyperTree-8.2-gd.lib
vtkFiltersImaging-8.2-gd.lib
vtkFiltersModeling-8.2-gd.lib
vtkFiltersParallel-8.2-gd.lib
vtkFiltersParallelImaging-8.2-gd.lib
vtkFiltersPoints-8.2-gd.lib
vtkFiltersProgrammable-8.2-gd.lib
vtkFiltersSelection-8.2-gd.lib
vtkFiltersSMP-8.2-gd.lib
vtkFiltersSources-8.2-gd.lib
vtkFiltersStatistics-8.2-gd.lib
vtkFiltersTexture-8.2-gd.lib
vtkFiltersTopology-8.2-gd.lib
vtkFiltersVerdict-8.2-gd.lib
vtkfreetype-8.2-gd.lib
vtkGeovisCore-8.2-gd.lib
vtkgl2ps-8.2-gd.lib
vtkglew-8.2-gd.lib
vtkGUISupportMFC-8.2-gd.lib
vtkhdf5-8.2-gd.lib
vtkhdf5_hl-8.2-gd.lib
vtkImagingColor-8.2-gd.lib
vtkImagingCore-8.2-gd.lib
vtkImagingFourier-8.2-gd.lib
vtkImagingGeneral-8.2-gd.lib
vtkImagingHybrid-8.2-gd.lib
vtkImagingMath-8.2-gd.lib
vtkImagingMorphological-8.2-gd.lib
vtkImagingSources-8.2-gd.lib
vtkImagingStatistics-8.2-gd.lib
vtkImagingStencil-8.2-gd.lib
vtkInfovisCore-8.2-gd.lib
vtkInfovisLayout-8.2-gd.lib
vtkInteractionImage-8.2-gd.lib
vtkInteractionStyle-8.2-gd.lib
vtkInteractionWidgets-8.2-gd.lib
vtkIOAMR-8.2-gd.lib
vtkIOAsynchronous-8.2-gd.lib
vtkIOCityGML-8.2-gd.lib
vtkIOCore-8.2-gd.lib
vtkIOEnSight-8.2-gd.lib
vtkIOExodus-8.2-gd.lib
vtkIOExport-8.2-gd.lib
vtkIOExportOpenGL2-8.2-gd.lib
vtkIOExportPDF-8.2-gd.lib
vtkIOGeometry-8.2-gd.lib
vtkIOImage-8.2-gd.lib
vtkIOImport-8.2-gd.lib
vtkIOInfovis-8.2-gd.lib
vtkIOLegacy-8.2-gd.lib
vtkIOLSDyna-8.2-gd.lib
vtkIOMINC-8.2-gd.lib
vtkIOMovie-8.2-gd.lib
vtkIONetCDF-8.2-gd.lib
vtkIOParallel-8.2-gd.lib
vtkIOParallelXML-8.2-gd.lib
vtkIOPLY-8.2-gd.lib
vtkIOSegY-8.2-gd.lib
vtkIOSQL-8.2-gd.lib
vtkIOTecplotTable-8.2-gd.lib
vtkIOVeraOut-8.2-gd.lib
vtkIOVideo-8.2-gd.lib
vtkIOXML-8.2-gd.lib
vtkIOXMLParser-8.2-gd.lib
vtkjpeg-8.2-gd.lib
vtkjsoncpp-8.2-gd.lib
vtklibharu-8.2-gd.lib
vtklibxml2-8.2-gd.lib
vtklz4-8.2-gd.lib
vtklzma-8.2-gd.lib
vtkmetaio-8.2-gd.lib
vtkNetCDF-8.2-gd.lib
vtkogg-8.2-gd.lib
vtkParallelCore-8.2-gd.lib
vtkpng-8.2-gd.lib
vtkproj-8.2-gd.lib
vtkpugixml-8.2-gd.lib
vtkRenderingAnnotation-8.2-gd.lib
vtkRenderingContext2D-8.2-gd.lib
vtkRenderingContextOpenGL2-8.2-gd.lib
vtkRenderingCore-8.2-gd.lib
vtkRenderingExternal-8.2-gd.lib
vtkRenderingFreeType-8.2-gd.lib
vtkRenderingGL2PSOpenGL2-8.2-gd.lib
vtkRenderingImage-8.2-gd.lib
vtkRenderingLabel-8.2-gd.lib
vtkRenderingLOD-8.2-gd.lib
vtkRenderingOpenGL2-8.2-gd.lib
vtkRenderingVolume-8.2-gd.lib
vtkRenderingVolumeOpenGL2-8.2-gd.lib
vtksqlite-8.2-gd.lib
vtksys-8.2-gd.lib
vtktheora-8.2-gd.lib
vtktiff-8.2-gd.lib
vtkverdict-8.2-gd.lib
vtkViewsContext2D-8.2-gd.lib
vtkViewsCore-8.2-gd.lib
vtkViewsInfovis-8.2-gd.lib
vtkzlib-8.2-gd.lib

À ce stade, toutes les propriétés ont été définies. Cliquez avec le bouton droit sur "PCL1.11.1" et cliquez sur "Enregistrer PCL1.11.1". De cette façon, lors de la création future d'un nouveau projet, vous pourrez sélectionner "Ajouter une table de propriétés existante" et ajoutez PCL1.11.1 directement sans le reconfigurer.
Insérer la description de l'image ici

4. Tester le code

La configuration de l'environnement est terminée. Testons le code pour voir s'il réussit. Entrez le code dans "source.cpp".
Insérer la description de l'image ici

le code s'affiche comme ci-dessous :

#include <iostream>
#include <vector>
#include <ctime>
#include <pcl/point_cloud.h>
#include <pcl/octree/octree.h>
#include <boost/thread/thread.hpp>
#include <pcl/visualization/pcl_visualizer.h>
using namespace std;
int
main(int argc, char** argv)
{
    
    
	srand((unsigned int)time(NULL));
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
	// 创建点云数据
	cloud->width = 1000;
	cloud->height = 1;
	cloud->points.resize(cloud->width * cloud->height);
	for (size_t i = 0; i < cloud->points.size(); ++i)
	{
    
    
		cloud->points[i].x = 1024.0f * rand() / (RAND_MAX + 1.0f);
		cloud->points[i].y = 1024.0f * rand() / (RAND_MAX + 1.0f);
		cloud->points[i].z = 1024.0f * rand() / (RAND_MAX + 1.0f);
	}

	pcl::octree::OctreePointCloudSearch<pcl::PointXYZ> octree(0.1);
	octree.setInputCloud(cloud);
	octree.addPointsFromInputCloud();
	pcl::PointXYZ searchPoint;
	searchPoint.x = 1024.0f * rand() / (RAND_MAX + 1.0f);
	searchPoint.y = 1024.0f * rand() / (RAND_MAX + 1.0f);
	searchPoint.z = 1024.0f * rand() / (RAND_MAX + 1.0f);

	//半径内近邻搜索
	vector<int>pointIdxRadiusSearch;
	vector<float>pointRadiusSquaredDistance;
	float radius = 256.0f * rand() / (RAND_MAX + 1.0f);
	cout << "Neighbors within radius search at (" << searchPoint.x
		<< " " << searchPoint.y
		<< " " << searchPoint.z
		<< ") with radius=" << radius << endl;
	if (octree.radiusSearch(searchPoint, radius, pointIdxRadiusSearch, pointRadiusSquaredDistance) > 0)
	{
    
    
		for (size_t i = 0; i < pointIdxRadiusSearch.size(); ++i)
			cout << "    " << cloud->points[pointIdxRadiusSearch[i]].x
			<< " " << cloud->points[pointIdxRadiusSearch[i]].y
			<< " " << cloud->points[pointIdxRadiusSearch[i]].z
			<< " (squared distance: " << pointRadiusSquaredDistance[i] << ")" << endl;
	}
	// 初始化点云可视化对象
	boost::shared_ptr<pcl::visualization::PCLVisualizer>viewer(new pcl::visualization::PCLVisualizer("显示点云"));
	viewer->setBackgroundColor(0, 0, 0);  //设置背景颜色为黑色
	// 对点云着色可视化 (red).
	pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ>target_color(cloud, 255, 0, 0);
	viewer->addPointCloud<pcl::PointXYZ>(cloud, target_color, "target cloud");
	viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "target cloud");

	// 等待直到可视化窗口关闭
	while (!viewer->wasStopped())
	{
    
    
		viewer->spinOnce(100);
		boost::this_thread::sleep(boost::posix_time::microseconds(1000));
	}

	return (0);
}

Le résultat est le suivant :
Insérer la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/Wxy971122/article/details/117018767
conseillé
Classement