PCL安装与配置

一、配置环境

1.win7 64位
2.Visual Studio 2015

二 、准备工作

安装包准备:

https://github.com/PointCloudLibrary/pcl/releases

或者在我分享的链接里面下载也可以:

链接:https://pan.baidu.com/s/1ywbyNu2XfapaRZVVQ3PeTw?pwd=1236
提取码:1236

下载这两个文件:

 

 

1.双击安装包中的「PCL-1.8.0-AllInOne-msvc2013-win64.exe」程序,安装的时候注意选上Add PCL to the system PATH for all users,如图所示,这样安装程序会自动在系统环境变量中添加PCL_ROOT项。

 

 

 

2.安装的过程中会弹出OpenNI的安装程序,将OpenNI的安装路径设置为PCL安装路径下的3rdParty\OpenNI2文件夹。
注:
如果没有弹出,则到 PCL 1.11.1\3rdParty\ 目录下找到OpenNI-Windows-x64-2.2.msi 进行安装(不行的话,就先卸载,再安装到该路径。),此时也会选择安装路径,默认是C盘。但此前安装已经在pcl的安装目录下的3rdParty文件夹中已经有了空的OpenNI2文件夹,建议将OpenNI安装路径改到此文件夹下,即安装路径为“C:\Program Files\PCL 1.11.1\3rdParty\OpenNI2”,如下图:
 

3.安装程序执行完成后,将pdb文件压缩包解压(即:PCL-1.8.0-AllInOne-msvc2013-win64-pdb.rar或者:pcl-1.12.1-pdb-msvc2019-win64.zip,将pdb文件拷贝到PCL安装目录下的bin文件夹中。

将解压出来的下面这些文件:

 

拷贝到:

 

 


四 、添加环境变量

1.点击win7的控制面板->系统->高级系统设置->在系统属性的“高级选项”卡下点击“环境变量”;

2.在系统变量子菜单里面找到“Path”,如图:

 

 

3.点击编辑,添加如下:

 ;C:\Program Files\PCL 1.9.1\bin;C:\Program Files\PCL 1.9.1\3rdParty\FLANN\bin;C:\Program Files\PCL 1.9.1\3rdParty\Qhull\bin;C:\Program Files\PCL 1.9.1\3rdParty\OpenNI2\Tools;C:\Program Files\PCL 1.9.1\3rdParty\VTK\bin

注意这里的“  ;  ”分号;

假如安装在了D盘,添加的环境变量如下:

;D:\Program Files\PCL 1.8.0\bin;D:\Program Files\PCL 1.8.0\3rdParty\FLANN\bin;D:\Program Files\PCL 1.8.0\3rdParty\Qhull\bin;D:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\Tools;D:\Program Files\PCL 1.8.0\3rdParty\VTK\bin

注意,第一项在“一键安装”时就已经添加。

添加环境变量之前的情况是:

 

 

编辑好之后如下图:

 

 

 

参考链接:https://zhuanlan.zhihu.com/p/36590026


 

五 、重启电脑

六、VS2015工程配置步骤

1.打开VS2015,创建新的win32控制台工程,建好后将平台改成X64;

2.点击项目菜单的属性,如图:

3.在弹出的对话框中,

 

 

①    点击“包含目录”下拉箭头->编辑,添加文件路径:

假如是安装在了C盘,则把下面的路径填进去:

C:\Program Files\PCL 1.9.1\include;C:\Program Files\PCL 1.9.1\include\pcl-1.9;C:\Program Files\PCL 1.9.1\3rdParty\FLANN\include;C:\Program Files\PCL 1.9.1\3rdParty\Eigen\eigen3;C:\Program Files\PCL 1.9.1\3rdParty\Boost\include;C:\Program Files\PCL 1.9.1\3rdParty\Qhull\include;C:\Program Files\PCL 1.9.1\3rdParty\OpenNI2\Include;C:\Program Files\PCL 1.9.1\3rdParty\VTK\include\vtk-8.1;C:\Program Files\PCL 1.9.1\3rdParty\Boost\include\boost-1_68;C:\Program Files\PCL 1.9.1\3rdParty\FLANN\include\flann;$(IncludePath)

或者:

w530:

C:\Program Files\PCL 1.8.0\include;

C:\Program Files\PCL 1.8.0\include\pcl-1.8;

C:\Program Files\PCL 1.8.0\3rdParty\FLANN\include;

C:\Program Files\PCL 1.8.0\3rdParty\Eigen\eigen3;

C:\Program Files\PCL 1.8.0\3rdParty\Boost\include;

C:\Program Files\PCL 1.8.0\3rdParty\Qhull\include;

C:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\Include;

C:\Program Files\PCL 1.8.0\3rdParty\VTK\include\vtk-8.1;

C:\Program Files\PCL 1.8.0\3rdParty\Boost\include\boost-1_68;

C:\Program Files\PCL 1.8.0\3rdParty\FLANN\include\flann;

$(IncludePath)

 

 

填好后如下图所示:

 

 

 

假如是安装在了D盘,则把下面的路径填进去:

D:\Program Files\PCL 1.12.1\include;D:\Program Files\PCL 1.12.1\include\pcl-1.12;D:\Program Files\PCL 1.12.1\3rdParty\FLANN\include;D:\Program Files\PCL 1.12.1\3rdParty\Eigen\eigen3;D:\Program Files\PCL 1.12.1\3rdParty\Boost\include;D:\Program Files\PCL 1.12.1\3rdParty\Qhull\include;D:\Program Files\PCL 1.12.1\3rdParty\OpenNI2\Include;D:\Program Files\PCL 1.12.1\3rdParty\VTK\include\vtk-9.1;D:\Program Files\PCL 1.12.1\3rdParty\Boost\include\boost-1_78;D:\Program Files\PCL 1.12.1\include\pcl-1.8;D:\Program Files\PCL 1.12.1\3rdParty\Boost\include\boost-1_64;D:\Program Files\PCL 1.12.1\3rdParty\FLANN\include\flann;D:\Program Files\PCL 1.12.1\3rdParty\VTK\include\vtk-8.0;

完成后点击确定;

②点击“库目录”下拉箭头->编辑,添加文件路径:

可以使用matlab代码对部分路径进行提取:

 

 

%====================================================%
% 安装PCL后,提取里面的.lib文件的文件名
% 
%====================================================%
clc;clear;
fclose('all');
file_dir = 'D:\Program Files\PCL 1.12.1\';
filelist_lib = dir(fullfile(file_dir, '\**\', '*.lib')); % 遍历一级及二级子文件夹,找出指定后缀名的所有文件
% 下面是写文件
fid=fopen('PCL_lib_files_name_debug.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件);
fid2=fopen('PCL_lib_files_name_release.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件);
fid3=fopen('PCL_lib_files_foldername.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件);



for i=1:size(filelist_lib,1)  % 遍历.lib文件的名字
    if contains(filelist_lib(i).name,'-gd') || contains(filelist_lib(i).name,'d.lib') 
        fprintf(fid,'%s\r\n',filelist_lib(i).name);  % %s 以字符的形式写入数据;
    else
        fprintf(fid2,'%s\r\n',filelist_lib(i).name); 
    end
end

fprintf(fid3,'%s\r\n',filelist_lib(1).folder); 
for i=1:size(filelist_lib,1)-1  % 遍历包含lib文件的文件夹的名字
    if strcmp(filelist_lib(i+1).folder,filelist_lib(i).folder)
        continue;
    end
    fprintf(fid3,'%s\r\n',filelist_lib(i+1).folder);  % %d 表示以整数形式写入数据,这正是我想要的;
end

fclose(fid);  %关闭文件;
fclose(fid2);  %关闭文件;
fclose(fid3);  %关闭文件;

 

 PCL安装在C盘的话填入以下信息:

C:\Program Files\PCL 1.9.1\3rdParty\Boost\include\boost-1_68;
C:\Program Files\PCL 1.9.1\3rdParty\FLANN\lib;
C:\Program Files\PCL 1.9.1\3rdParty\Boost\lib;
C:\Program Files\PCL 1.9.1\3rdParty\VTK\lib;
C:\Program Files\PCL 1.9.1\3rdParty\Qhull\lib;
C:\Program Files\PCL 1.9.1\3rdParty\OpenNI2\Lib;
C:\Program Files\PCL 1.9.1\lib;

或者:

C:\Program Files\PCL 1.8.0\3rdParty\Boost\include\boost-1_68;
C:\Program Files\PCL 1.8.0\3rdParty\FLANN\lib;
C:\Program Files\PCL 1.8.0\3rdParty\Boost\lib;
C:\Program Files\PCL 1.8.0\3rdParty\VTK\lib;
C:\Program Files\PCL 1.8.0\3rdParty\Qhull\lib;
C:\Program Files\PCL 1.8.0\3rdParty\OpenNI2\Lib;
C:\Program Files\PCL 1.8.0\lib;

 xps15 9550:

C:\Program Files\PCL 1.9.1\3rdParty\Boost\include\boost-1_68

C:\Program Files\PCL 1.9.1\3rdParty\FLANN\lib

C:\Program Files\PCL 1.9.1\3rdParty\Boost\lib

C:\Program Files\PCL 1.9.1\3rdParty\VTK\lib

C:\Program Files\PCL 1.9.1\3rdParty\Qhull\lib

C:\Program Files\PCL 1.9.1\3rdParty\OpenNI2\lib

C:\Program Files\PCL 1.9.1\lib

 

填入后假如和下面的库目录不符合,再编辑修改一下:

 

 

 

D盘的话填入以下信息:

D:\Program Files\PCL 1.12.1\3rdParty\Boost\include\boost-1_78;D:\Program Files\PCL 1.12.1\lib;D:\Program Files\PCL 1.12.1\3rdParty\Boost\lib;D:\Program Files\PCL 1.12.1\3rdParty\FLANN\lib;D:\Program Files\PCL 1.12.1\3rdParty\OpenNI2\Lib;D:\Program Files\PCL 1.12.1\3rdParty\Qhull\lib;D:\Program Files\PCL 1.12.1\3rdParty\VTK\lib;

完成后点击确定;

4.点击链接器->输入->附加依赖项:

点击下拉箭头->编辑,添加下列文件:

pcl_common_release.lib

pcl_features_release.lib

pcl_filters_release.lib

pcl_io_ply_release.lib

pcl_io_release.lib

pcl_kdtree_release.lib

pcl_keypoints_release.lib

pcl_ml_release.lib

pcl_octree_release.lib

pcl_outofcore_release.lib

pcl_people_release.lib

pcl_recognition_release.lib

pcl_registration_release.lib

pcl_sample_consensus_release.lib

pcl_search_release.lib

pcl_segmentation_release.lib

pcl_stereo_release.lib

pcl_surface_release.lib

pcl_tracking_release.lib

pcl_visualization_release.lib

libboost_atomic-vc140-mt-1_61.lib

libboost_chrono-vc140-mt-1_61.lib

libboost_container-vc140-mt-1_61.lib

libboost_context-vc140-mt-1_61.lib

libboost_coroutine-vc140-mt-1_61.lib

libboost_date_time-vc140-mt-1_61.lib

libboost_exception-vc140-mt-1_61.lib

libboost_filesystem-vc140-mt-1_61.lib

libboost_graph-vc140-mt-1_61.lib

libboost_iostreams-vc140-mt-1_61.lib

libboost_locale-vc140-mt-1_61.lib

libboost_log-vc140-mt-1_61.lib

libboost_log_setup-vc140-mt-1_61.lib

libboost_math_c99-vc140-mt-1_61.lib

libboost_math_c99f-vc140-mt-1_61.lib

libboost_math_c99l-vc140-mt-1_61.lib

libboost_math_tr1-vc140-mt-1_61.lib

libboost_math_tr1f-vc140-mt-1_61.lib

libboost_math_tr1l-vc140-mt-1_61.lib

libboost_mpi-vc140-mt-1_61.lib

libboost_prg_exec_monitor-vc140-mt-1_61.lib

libboost_program_options-vc140-mt-1_61.lib

libboost_random-vc140-mt-1_61.lib

libboost_regex-vc140-mt-1_61.lib

libboost_serialization-vc140-mt-1_61.lib

libboost_signals-vc140-mt-1_61.lib

libboost_system-vc140-mt-1_61.lib

libboost_test_exec_monitor-vc140-mt-1_61.lib

libboost_thread-vc140-mt-1_61.lib

libboost_timer-vc140-mt-1_61.lib

libboost_unit_test_framework-vc140-mt-1_61.lib

libboost_wave-vc140-mt-1_61.lib

libboost_wserialization-vc140-mt-1_61.lib

flann.lib

flann_s.lib

flann-gd.lib

flann_cpp_s.lib

flann_cpp_s-gd.lib

flann_s-gd.lib

qhull.lib

qhull_d.lib

qhullcpp_d.lib

qhullstatic.lib

qhullstatic_d.lib

qhullstatic_r.lib

qhullstatic_r_d.lib

qhull_p.lib

qhull_p_d.lib

qhull_r.lib

qhull_r_d.lib

vtkalglib-7.0.lib

vtkChartsCore-7.0.lib

vtkCommonColor-7.0.lib

vtkCommonComputationalGeometry-7.0.lib

vtkCommonCore-7.0.lib

vtkCommonDataModel-7.0.lib

vtkCommonExecutionModel-7.0.lib

vtkCommonMath-7.0.lib

vtkCommonMisc-7.0.lib

vtkCommonSystem-7.0.lib

vtkCommonTransforms-7.0.lib

vtkDICOMParser-7.0.lib

vtkDomainsChemistry-7.0.lib

vtkexoIIc-7.0.lib

vtkexpat-7.0.lib

vtkFiltersAMR-7.0.lib

vtkFiltersCore-7.0.lib

vtkFiltersExtraction-7.0.lib

vtkFiltersFlowPaths-7.0.lib

vtkFiltersGeneral-7.0.lib

vtkFiltersGeneric-7.0.lib

vtkFiltersGeometry-7.0.lib

vtkFiltersHybrid-7.0.lib

vtkFiltersHyperTree-7.0.lib

vtkFiltersImaging-7.0.lib

vtkFiltersModeling-7.0.lib

vtkFiltersParallel-7.0.lib

vtkFiltersParallelImaging-7.0.lib

vtkFiltersProgrammable-7.0.lib

vtkFiltersSelection-7.0.lib

vtkFiltersSMP-7.0.lib

vtkFiltersSources-7.0.lib

vtkFiltersStatistics-7.0.lib

vtkFiltersTexture-7.0.lib

vtkFiltersVerdict-7.0.lib

vtkfreetype-7.0.lib

vtkGeovisCore-7.0.lib

vtkhdf5-7.0.lib

vtkhdf5_hl-7.0.lib

vtkImagingColor-7.0.lib

vtkImagingCore-7.0.lib

vtkImagingFourier-7.0.lib

vtkImagingGeneral-7.0.lib

vtkImagingHybrid-7.0.lib

vtkImagingMath-7.0.lib

vtkImagingMorphological-7.0.lib

vtkImagingSources-7.0.lib

vtkImagingStatistics-7.0.lib

vtkImagingStencil-7.0.lib

vtkInfovisCore-7.0.lib

vtkInfovisLayout-7.0.lib

vtkInteractionImage-7.0.lib

vtkInteractionStyle-7.0.lib

vtkInteractionWidgets-7.0.lib

vtkIOAMR-7.0.lib

vtkIOCore-7.0.lib

vtkIOEnSight-7.0.lib

vtkIOExodus-7.0.lib

vtkIOExport-7.0.lib

vtkIOGeometry-7.0.lib

vtkIOImage-7.0.lib

vtkIOImport-7.0.lib

vtkIOInfovis-7.0.lib

vtkIOLegacy-7.0.lib

vtkIOLSDyna-7.0.lib

vtkIOMINC-7.0.lib

vtkIOMovie-7.0.lib

vtkIONetCDF-7.0.lib

vtkIOParallel-7.0.lib

vtkIOParallelXML-7.0.lib

vtkIOPLY-7.0.lib

vtkIOSQL-7.0.lib

vtkIOVideo-7.0.lib

vtkIOXML-7.0.lib

vtkIOXMLParser-7.0.lib

vtkjpeg-7.0.lib

vtkjsoncpp-7.0.lib

vtklibxml2-7.0.lib

vtkmetaio-7.0.lib

vtkNetCDF-7.0.lib

vtkNetCDF_cxx-7.0.lib

vtkoggtheora-7.0.lib

vtkParallelCore-7.0.lib

vtkpng-7.0.lib

vtkproj4-7.0.lib

vtkRenderingAnnotation-7.0.lib

vtkRenderingContext2D-7.0.lib

vtkRenderingContextOpenGL-7.0.lib

vtkRenderingCore-7.0.lib

vtkRenderingFreeType-7.0.lib

vtkRenderingImage-7.0.lib

vtkRenderingLabel-7.0.lib

vtkRenderingLOD-7.0.lib

vtkRenderingOpenGL-7.0.lib

vtkRenderingVolume-7.0.lib

vtkRenderingVolumeOpenGL-7.0.lib

vtksqlite-7.0.lib

vtksys-7.0.lib

vtktiff-7.0.lib

vtkverdict-7.0.lib

vtkViewsContext2D-7.0.lib

vtkViewsCore-7.0.lib

vtkViewsInfovis-7.0.lib

vtkzlib-7.0.lib

 

上面很多的.lib文件一个一个的复制很麻烦,二级子文件夹里面也会有,所以使用matlab程序对.lib文件进行提取并另存到一个文本文件中,然后复制粘贴就行了,代码如下:

%====================================================%
% 安装PCL后,提取里面的.lib文件的文件名
% 
%====================================================%
clc;clear;
file_dir = 'D:\Program Files\PCL 1.12.1\';
filelist_lib = dir(fullfile(file_dir, '\**\', '*.lib')); % 遍历一级及二级子文件夹,找出指定后缀名的所有文件
% 下面是写文件
fid=fopen('PCL_lib_files_name.txt','a'); %写的方式打开文件(若不存在,建立文件);
for i=1:size(filelist_lib,1)
    fprintf(fid,'%s\r\n',filelist_lib(i).name);  % %d 表示以整数形式写入数据,这正是我想要的;
end
fclose(fid);  %关闭文件;

 

 

完成后点击确定;

 

注意:上面为在release下运行的文件,如果想在debug下运行,则将其中的release改成debug;

带-gd的和带d的为debug模式,不带的为release模式。这里应该按照两个模式分别添加不同的库文件。

用matlab代码把debug模式和release模式下的库文件区分开:

%====================================================%
% 安装PCL后,提取里面的.lib文件的文件名
%
%====================================================%
clc;clear;
fclose('all');
file_dir = 'C:\Program Files\PCL 1.9.1\';
filelist_lib = dir(fullfile(file_dir, '\**\', '*.lib')); % 遍历一级及二级子文件夹,找出指定后缀名的所有文件
% 下面是写文件
fid=fopen('PCL_lib_files_name_debug.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件);
fid2=fopen('PCL_lib_files_name_release.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件);
fid3=fopen('PCL_lib_files_foldername.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件);
fid4=fopen('PCL_lib_files_name_notsure.txt','w+'); %可写可追加的方式打开文件(若不存在,建立文件);

 

for i=1:size(filelist_lib,1) % 遍历.lib文件的名字
if contains(filelist_lib(i).name,'-mt-gd-x64') || contains(filelist_lib(i).name,'d.lib') || contains(filelist_lib(i).name,'_debug.lib')...
|| contains(filelist_lib(i).name,'OpenNI2')...
|| contains(filelist_lib(i).name,'glu')
fprintf(fid,'%s\r\n',filelist_lib(i).name); % %s 以字符的形式写入数据;
elseif contains(filelist_lib(i).name,'-mt-x64') || contains(filelist_lib(i).name,'_release.lib')
fprintf(fid2,'%s\r\n',filelist_lib(i).name);
else
fprintf(fid4,'%s\r\n',filelist_lib(i).name);
end
end

fprintf(fid3,'%s%s',filelist_lib(1).folder,';');
for i=1:size(filelist_lib,1)-1 % 遍历包含lib文件的文件夹的名字
if strcmp(filelist_lib(i+1).folder,filelist_lib(i).folder)
continue;
end
fprintf(fid3,'%s%s',filelist_lib(i+1).folder,';'); % %d 表示以整数形式写入数据,这正是我想要的;
end

fclose(fid); %关闭文件;
fclose(fid2); %关闭文件;
fclose(fid3); %关闭文件;
fclose(fid4); %关闭文件;

 

 

debug模式下的.lib文件有matlab遍历出来的下面这些:

libboost_atomic-vc141-mt-gd-x64-1_68.lib
libboost_bzip2-vc141-mt-gd-x64-1_68.lib
libboost_chrono-vc141-mt-gd-x64-1_68.lib
libboost_container-vc141-mt-gd-x64-1_68.lib
libboost_context-vc141-mt-gd-x64-1_68.lib
libboost_contract-vc141-mt-gd-x64-1_68.lib
libboost_coroutine-vc141-mt-gd-x64-1_68.lib
libboost_date_time-vc141-mt-gd-x64-1_68.lib
libboost_exception-vc141-mt-gd-x64-1_68.lib
libboost_fiber-vc141-mt-gd-x64-1_68.lib
libboost_filesystem-vc141-mt-gd-x64-1_68.lib
libboost_graph-vc141-mt-gd-x64-1_68.lib
libboost_graph_parallel-vc141-mt-gd-x64-1_68.lib
libboost_iostreams-vc141-mt-gd-x64-1_68.lib
libboost_locale-vc141-mt-gd-x64-1_68.lib
libboost_log-vc141-mt-gd-x64-1_68.lib
libboost_log_setup-vc141-mt-gd-x64-1_68.lib
libboost_math_c99-vc141-mt-gd-x64-1_68.lib
libboost_math_c99f-vc141-mt-gd-x64-1_68.lib
libboost_math_c99l-vc141-mt-gd-x64-1_68.lib
libboost_math_tr1-vc141-mt-gd-x64-1_68.lib
libboost_math_tr1f-vc141-mt-gd-x64-1_68.lib
libboost_math_tr1l-vc141-mt-gd-x64-1_68.lib
libboost_mpi-vc141-mt-gd-x64-1_68.lib
libboost_numpy27-vc141-mt-gd-x64-1_68.lib
libboost_numpy37-vc141-mt-gd-x64-1_68.lib
libboost_prg_exec_monitor-vc141-mt-gd-x64-1_68.lib
libboost_program_options-vc141-mt-gd-x64-1_68.lib
libboost_python27-vc141-mt-gd-x64-1_68.lib
libboost_python37-vc141-mt-gd-x64-1_68.lib
libboost_random-vc141-mt-gd-x64-1_68.lib
libboost_regex-vc141-mt-gd-x64-1_68.lib
libboost_serialization-vc141-mt-gd-x64-1_68.lib
libboost_signals-vc141-mt-gd-x64-1_68.lib
libboost_stacktrace_noop-vc141-mt-gd-x64-1_68.lib
libboost_stacktrace_windbg-vc141-mt-gd-x64-1_68.lib
libboost_stacktrace_windbg_cached-vc141-mt-gd-x64-1_68.lib
libboost_system-vc141-mt-gd-x64-1_68.lib
libboost_test_exec_monitor-vc141-mt-gd-x64-1_68.lib
libboost_thread-vc141-mt-gd-x64-1_68.lib
libboost_timer-vc141-mt-gd-x64-1_68.lib
libboost_type_erasure-vc141-mt-gd-x64-1_68.lib
libboost_unit_test_framework-vc141-mt-gd-x64-1_68.lib
libboost_wave-vc141-mt-gd-x64-1_68.lib
libboost_wserialization-vc141-mt-gd-x64-1_68.lib
libboost_zlib-vc141-mt-gd-x64-1_68.lib
flann-gd.lib
flann_cpp-gd.lib
flann_cpp_s-gd.lib
flann_s-gd.lib
OpenNI2.lib
qhull_d.lib
qhull_p_d.lib
qhull_r_d.lib
qhullcpp_d.lib
qhullstatic_d.lib
qhullstatic_r_d.lib
vtkChartsCore-8.1-gd.lib
vtkCommonColor-8.1-gd.lib
vtkCommonComputationalGeometry-8.1-gd.lib
vtkCommonCore-8.1-gd.lib
vtkCommonDataModel-8.1-gd.lib
vtkCommonExecutionModel-8.1-gd.lib
vtkCommonMath-8.1-gd.lib
vtkCommonMisc-8.1-gd.lib
vtkCommonSystem-8.1-gd.lib
vtkCommonTransforms-8.1-gd.lib
vtkDICOMParser-8.1-gd.lib
vtkDomainsChemistry-8.1-gd.lib
vtkFiltersAMR-8.1-gd.lib
vtkFiltersCore-8.1-gd.lib
vtkFiltersExtraction-8.1-gd.lib
vtkFiltersFlowPaths-8.1-gd.lib
vtkFiltersGeneral-8.1-gd.lib
vtkFiltersGeneric-8.1-gd.lib
vtkFiltersGeometry-8.1-gd.lib
vtkFiltersHybrid-8.1-gd.lib
vtkFiltersHyperTree-8.1-gd.lib
vtkFiltersImaging-8.1-gd.lib
vtkFiltersModeling-8.1-gd.lib
vtkFiltersParallel-8.1-gd.lib
vtkFiltersParallelImaging-8.1-gd.lib
vtkFiltersPoints-8.1-gd.lib
vtkFiltersProgrammable-8.1-gd.lib
vtkFiltersSMP-8.1-gd.lib
vtkFiltersSelection-8.1-gd.lib
vtkFiltersSources-8.1-gd.lib
vtkFiltersStatistics-8.1-gd.lib
vtkFiltersTexture-8.1-gd.lib
vtkFiltersTopology-8.1-gd.lib
vtkFiltersVerdict-8.1-gd.lib
vtkGeovisCore-8.1-gd.lib
vtkIOAMR-8.1-gd.lib
vtkIOCore-8.1-gd.lib
vtkIOEnSight-8.1-gd.lib
vtkIOExodus-8.1-gd.lib
vtkIOExport-8.1-gd.lib
vtkIOExportOpenGL-8.1-gd.lib
vtkIOGeometry-8.1-gd.lib
vtkIOImage-8.1-gd.lib
vtkIOImport-8.1-gd.lib
vtkIOInfovis-8.1-gd.lib
vtkIOLSDyna-8.1-gd.lib
vtkIOLegacy-8.1-gd.lib
vtkIOMINC-8.1-gd.lib
vtkIOMovie-8.1-gd.lib
vtkIONetCDF-8.1-gd.lib
vtkIOPLY-8.1-gd.lib
vtkIOParallel-8.1-gd.lib
vtkIOParallelXML-8.1-gd.lib
vtkIOSQL-8.1-gd.lib
vtkIOTecplotTable-8.1-gd.lib
vtkIOVideo-8.1-gd.lib
vtkIOXML-8.1-gd.lib
vtkIOXMLParser-8.1-gd.lib
vtkImagingColor-8.1-gd.lib
vtkImagingCore-8.1-gd.lib
vtkImagingFourier-8.1-gd.lib
vtkImagingGeneral-8.1-gd.lib
vtkImagingHybrid-8.1-gd.lib
vtkImagingMath-8.1-gd.lib
vtkImagingMorphological-8.1-gd.lib
vtkImagingSources-8.1-gd.lib
vtkImagingStatistics-8.1-gd.lib
vtkImagingStencil-8.1-gd.lib
vtkInfovisCore-8.1-gd.lib
vtkInfovisLayout-8.1-gd.lib
vtkInteractionImage-8.1-gd.lib
vtkInteractionStyle-8.1-gd.lib
vtkInteractionWidgets-8.1-gd.lib
vtkNetCDF-8.1-gd.lib
vtkParallelCore-8.1-gd.lib
vtkRenderingAnnotation-8.1-gd.lib
vtkRenderingContext2D-8.1-gd.lib
vtkRenderingContextOpenGL-8.1-gd.lib
vtkRenderingCore-8.1-gd.lib
vtkRenderingFreeType-8.1-gd.lib
vtkRenderingGL2PS-8.1-gd.lib
vtkRenderingImage-8.1-gd.lib
vtkRenderingLIC-8.1-gd.lib
vtkRenderingLOD-8.1-gd.lib
vtkRenderingLabel-8.1-gd.lib
vtkRenderingOpenGL-8.1-gd.lib
vtkRenderingVolume-8.1-gd.lib
vtkRenderingVolumeOpenGL-8.1-gd.lib
vtkViewsContext2D-8.1-gd.lib
vtkViewsCore-8.1-gd.lib
vtkViewsInfovis-8.1-gd.lib
vtkalglib-8.1-gd.lib
vtkexoIIc-8.1-gd.lib
vtkexpat-8.1-gd.lib
vtkfreetype-8.1-gd.lib
vtkgl2ps-8.1-gd.lib
vtkhdf5-8.1-gd.lib
vtkhdf5_hl-8.1-gd.lib
vtkjpeg-8.1-gd.lib
vtkjsoncpp-8.1-gd.lib
vtklibharu-8.1-gd.lib
vtklibxml2-8.1-gd.lib
vtklz4-8.1-gd.lib
vtkmetaio-8.1-gd.lib
vtknetcdfcpp-8.1-gd.lib
vtkoggtheora-8.1-gd.lib
vtkpng-8.1-gd.lib
vtkproj4-8.1-gd.lib
vtksqlite-8.1-gd.lib
vtksys-8.1-gd.lib
vtktiff-8.1-gd.lib
vtkverdict-8.1-gd.lib
vtkzlib-8.1-gd.lib
pcl_common_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_io_debug.lib
pcl_io_ply_debug.lib
pcl_kdtree_debug.lib
pcl_keypoints_debug.lib
pcl_ml_debug.lib
pcl_octree_debug.lib
pcl_outofcore_debug.lib
pcl_people_debug.lib
pcl_recognition_debug.lib
pcl_registration_debug.lib
pcl_sample_consensus_debug.lib
pcl_search_debug.lib
pcl_segmentation_debug.lib
pcl_stereo_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
pcl_visualization_debug.lib

 

再加上下面这些:

kernel32.lib;
user32.lib;
gdi32.lib;
winspool.lib;
shell32.lib;
ole32.lib;
oleaut32.lib;
uuid.lib;
comdlg32.lib;
advapi32.lib;
comctl32.lib;
wsock32.lib;
glu32.lib;
opengl32.lib;
ws2_32.lib;
Psapi.lib;

 

release模式下的.lib文件有matlab遍历出来的这些:

libboost_atomic-vc141-mt-x64-1_68.lib
libboost_bzip2-vc141-mt-x64-1_68.lib
libboost_chrono-vc141-mt-x64-1_68.lib
libboost_container-vc141-mt-x64-1_68.lib
libboost_context-vc141-mt-x64-1_68.lib
libboost_contract-vc141-mt-x64-1_68.lib
libboost_coroutine-vc141-mt-x64-1_68.lib
libboost_date_time-vc141-mt-x64-1_68.lib
libboost_exception-vc141-mt-x64-1_68.lib
libboost_fiber-vc141-mt-x64-1_68.lib
libboost_filesystem-vc141-mt-x64-1_68.lib
libboost_graph-vc141-mt-x64-1_68.lib
libboost_graph_parallel-vc141-mt-x64-1_68.lib
libboost_iostreams-vc141-mt-x64-1_68.lib
libboost_locale-vc141-mt-x64-1_68.lib
libboost_log-vc141-mt-x64-1_68.lib
libboost_log_setup-vc141-mt-x64-1_68.lib
libboost_math_c99-vc141-mt-x64-1_68.lib
libboost_math_c99f-vc141-mt-x64-1_68.lib
libboost_math_c99l-vc141-mt-x64-1_68.lib
libboost_math_tr1-vc141-mt-x64-1_68.lib
libboost_math_tr1f-vc141-mt-x64-1_68.lib
libboost_math_tr1l-vc141-mt-x64-1_68.lib
libboost_mpi-vc141-mt-x64-1_68.lib
libboost_numpy27-vc141-mt-x64-1_68.lib
libboost_numpy37-vc141-mt-x64-1_68.lib
libboost_prg_exec_monitor-vc141-mt-x64-1_68.lib
libboost_program_options-vc141-mt-x64-1_68.lib
libboost_python27-vc141-mt-x64-1_68.lib
libboost_python37-vc141-mt-x64-1_68.lib
libboost_random-vc141-mt-x64-1_68.lib
libboost_regex-vc141-mt-x64-1_68.lib
libboost_serialization-vc141-mt-x64-1_68.lib
libboost_signals-vc141-mt-x64-1_68.lib
libboost_stacktrace_noop-vc141-mt-x64-1_68.lib
libboost_stacktrace_windbg-vc141-mt-x64-1_68.lib
libboost_stacktrace_windbg_cached-vc141-mt-x64-1_68.lib
libboost_system-vc141-mt-x64-1_68.lib
libboost_test_exec_monitor-vc141-mt-x64-1_68.lib
libboost_thread-vc141-mt-x64-1_68.lib
libboost_timer-vc141-mt-x64-1_68.lib
libboost_type_erasure-vc141-mt-x64-1_68.lib
libboost_unit_test_framework-vc141-mt-x64-1_68.lib
libboost_wave-vc141-mt-x64-1_68.lib
libboost_wserialization-vc141-mt-x64-1_68.lib
libboost_zlib-vc141-mt-x64-1_68.lib
pcl_common_release.lib
pcl_features_release.lib
pcl_filters_release.lib
pcl_io_ply_release.lib
pcl_io_release.lib
pcl_kdtree_release.lib
pcl_keypoints_release.lib
pcl_ml_release.lib
pcl_octree_release.lib
pcl_outofcore_release.lib
pcl_people_release.lib
pcl_recognition_release.lib
pcl_registration_release.lib
pcl_sample_consensus_release.lib
pcl_search_release.lib
pcl_segmentation_release.lib
pcl_stereo_release.lib
pcl_surface_release.lib
pcl_tracking_release.lib
pcl_visualization_release.lib

再加上下面这些:

flann.lib
flann_cpp.lib
flann_cpp_s.lib
flann_s.lib
MWClosestPoint.lib
qhull.lib
qhull_p.lib
qhull_r.lib
qhullcpp.lib
qhullstatic.lib
qhullstatic_r.lib
vtkChartsCore-8.1.lib
vtkCommonColor-8.1.lib
vtkCommonComputationalGeometry-8.1.lib
vtkCommonCore-8.1.lib
vtkCommonDataModel-8.1.lib
vtkCommonExecutionModel-8.1.lib
vtkCommonMath-8.1.lib
vtkCommonMisc-8.1.lib
vtkCommonSystem-8.1.lib
vtkCommonTransforms-8.1.lib
vtkDICOMParser-8.1.lib
vtkDomainsChemistry-8.1.lib
vtkFiltersAMR-8.1.lib
vtkFiltersCore-8.1.lib
vtkFiltersExtraction-8.1.lib
vtkFiltersFlowPaths-8.1.lib
vtkFiltersGeneral-8.1.lib
vtkFiltersGeneric-8.1.lib
vtkFiltersGeometry-8.1.lib
vtkFiltersHybrid-8.1.lib
vtkFiltersHyperTree-8.1.lib
vtkFiltersImaging-8.1.lib
vtkFiltersModeling-8.1.lib
vtkFiltersParallel-8.1.lib
vtkFiltersParallelImaging-8.1.lib
vtkFiltersPoints-8.1.lib
vtkFiltersProgrammable-8.1.lib
vtkFiltersSMP-8.1.lib
vtkFiltersSelection-8.1.lib
vtkFiltersSources-8.1.lib
vtkFiltersStatistics-8.1.lib
vtkFiltersTexture-8.1.lib
vtkFiltersTopology-8.1.lib
vtkFiltersVerdict-8.1.lib
vtkGeovisCore-8.1.lib
vtkIOAMR-8.1.lib
vtkIOCore-8.1.lib
vtkIOEnSight-8.1.lib
vtkIOExodus-8.1.lib
vtkIOExport-8.1.lib
vtkIOExportOpenGL-8.1.lib
vtkIOGeometry-8.1.lib
vtkIOImage-8.1.lib
vtkIOImport-8.1.lib
vtkIOInfovis-8.1.lib
vtkIOLSDyna-8.1.lib
vtkIOLegacy-8.1.lib
vtkIOMINC-8.1.lib
vtkIOMovie-8.1.lib
vtkIONetCDF-8.1.lib
vtkIOPLY-8.1.lib
vtkIOParallel-8.1.lib
vtkIOParallelXML-8.1.lib
vtkIOSQL-8.1.lib
vtkIOTecplotTable-8.1.lib
vtkIOVideo-8.1.lib
vtkIOXML-8.1.lib
vtkIOXMLParser-8.1.lib
vtkImagingColor-8.1.lib
vtkImagingCore-8.1.lib
vtkImagingFourier-8.1.lib
vtkImagingGeneral-8.1.lib
vtkImagingHybrid-8.1.lib
vtkImagingMath-8.1.lib
vtkImagingMorphological-8.1.lib
vtkImagingSources-8.1.lib
vtkImagingStatistics-8.1.lib
vtkImagingStencil-8.1.lib
vtkInfovisCore-8.1.lib
vtkInfovisLayout-8.1.lib
vtkInteractionImage-8.1.lib
vtkInteractionStyle-8.1.lib
vtkInteractionWidgets-8.1.lib
vtkNetCDF-8.1.lib
vtkParallelCore-8.1.lib
vtkRenderingAnnotation-8.1.lib
vtkRenderingContext2D-8.1.lib
vtkRenderingContextOpenGL-8.1.lib
vtkRenderingCore-8.1.lib
vtkRenderingFreeType-8.1.lib
vtkRenderingGL2PS-8.1.lib
vtkRenderingImage-8.1.lib
vtkRenderingLIC-8.1.lib
vtkRenderingLOD-8.1.lib
vtkRenderingLabel-8.1.lib
vtkRenderingOpenGL-8.1.lib
vtkRenderingVolume-8.1.lib
vtkRenderingVolumeOpenGL-8.1.lib
vtkViewsContext2D-8.1.lib
vtkViewsCore-8.1.lib
vtkViewsInfovis-8.1.lib
vtkalglib-8.1.lib
vtkexoIIc-8.1.lib
vtkexpat-8.1.lib
vtkfreetype-8.1.lib
vtkgl2ps-8.1.lib
vtkhdf5-8.1.lib
vtkhdf5_hl-8.1.lib
vtkjpeg-8.1.lib
vtkjsoncpp-8.1.lib
vtklibharu-8.1.lib
vtklibxml2-8.1.lib
vtklz4-8.1.lib
vtkmetaio-8.1.lib
vtknetcdfcpp-8.1.lib
vtkoggtheora-8.1.lib
vtkpng-8.1.lib
vtkproj4-8.1.lib
vtksqlite-8.1.lib
vtksys-8.1.lib
vtktiff-8.1.lib
vtkverdict-8.1.lib
vtkzlib-8.1.lib

 

 

 

5.点击配置属性下的调试,右边有个环境项(实际上这个是设置Visual Studio的环境变量,使其在(调试)运行的时候,能够找到相应的动态链接库),把值设置为:

PATH=$(PCL_ROOT)\bin;$(PCL_ROOT)\3rdParty\FLANN\bin;$(PCL_ROOT)\3rdParty\VTK\bin;$(PCL_ROOT)\Qhull\bin;$(PCL_ROOT)\3rdParty\OpenNI2\Tools;$(PATH)

 

 

6.点击配置属性下的C/C++,点击它的子项预处理器,右边有个预处理器定义,添加上_SCL_SECURE_NO_WARNINGS           和              _CRT_SECURE_NO_WARNINGS。

7.点击配置属性下的C/C++,常规

如果安装在了C盘:

在附加包含目录中添加:C:\Program Files\PCL 1.9.1\3rdParty\Boost\include\boost-1_68

如果安装在了D盘:

在附加包含目录中添加:D:\Program Files\PCL 1.12.1\3rdParty\Boost\include\boost-1_78

 

8.在属性管理器里点击项目,展开子项。

Property Manager与Solution Explorer在同一个tab布局中,如果没找到的话,可通过如下方式寻找属性管理器:菜单栏的VIEW(视图)->Other Windows(其他窗口)->Property Manager(属性管理器)。

如果安装的是32位,点击选中开头为Debug的子项里右键,点击添加现有属性表,然后找到你下载的文件夹里的PCLDebug.props,添加上。点击选中开头为Release的子项里右键,点击添加现有属性表,然后找到你下载的文件夹里的PCLRelease.props,添加上。


如果安装的是64位,点击选中开头为Debug的子项里右键,点击添加现有属性表,然后找到你下载的文件夹里的PCLDebug.props,添加上。点击选中开头为Release的子项里右键,点击添加现有属性表,然后找到你下载的文件夹里的PCLRelease.props,添加上。


注意在这里,64位的会有2个开头为Debug的子项,都要添加上PCLDebug.props,并且2个开头为Release的子项,也要添加上PCLRelease.props。

关于PCLRelease.props文件和PCLDebug.props文件在这个网盘链接:

链接:https://pan.baidu.com/s/19YiQflSC02F9vWApUQKLwg?pwd=csm3
提取码:csm3

9.

注意:如果出现以下这种问题:

解决方案:

 

 

从上图中的箭头中,将问题中提示的.lib文件删除即可;

如果出现以下问题:

 

 解决方案1是:

在3的地方点击编辑:

 

把上图中的√去掉。

解决方案2是:

把libboost_atomic-vc141-mt-gd-x64-1_68.lib所在的目录添加到附加包含目录。

 

 

 

 

 

 

 

如果出现以下情况:

 

提示OpenNI2.dll丢失

在\3rdParty\OpenNI2\ 中找到*msi安装包,先卸载,在安装到该路径。

 

 假如出现以下错误:

error C4996: 'vtkMapper::ImmediateModeRenderingOff':

解决办法:将sdl选择否

 

五、程序实际测试

测试1:

将rabbit.pcd(在网盘中,链接: https://pan.baidu.com/s/1mpktPz4tlQJzxHKMUPuxsQ 提取码: uhf4)放到与工程中的主.cpp同一位置的文件夹下(工程文件夹)

程序代码:

#include<pcl/visualization/cloud_viewer.h>
#include<iostream>//标准C++库中的输入输出类相关头文件。
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>//pcd 读写类相关的头文件。
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h> //PCL中支持的点类型头文件。
int user_data;
using std::cout;


void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) {
    viewer.setBackgroundColor(1.0, 0.5, 1.0);   //设置背景颜色
}

int main() {
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

    char strfilepath[256] = "rabbit.pcd";
    if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)) {
        cout << "error input!" << endl;
        return -1;
    }

    cout << cloud->points.size() << endl;
    pcl::visualization::CloudViewer viewer("Cloud Viewer");     //创建viewer对象

    viewer.showCloud(cloud);
    viewer.runOnVisualizationThreadOnce(viewerOneOff);
    system("pause");
    return 0;
}

 

效果图:

测试1在运行的时候出现这个问题:

 

在调试的时候出现这个问题的话:

测试2:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>

int  main(int argc, char** argv)
{
    pcl::PointCloud<pcl::PointXYZ> cloud;   // Fill in the cloud data  
    cloud.width = 5;
    cloud.height = 1;
    cloud.is_dense = false;
    cloud.points.resize(cloud.width * cloud.height);
    for (std::size_t i = 0; i < cloud.points.size(); ++i)
    {
        cloud.points[i].x = 1024 * rand() / (RAND_MAX + 1.0f);
        cloud.points[i].y = 1024 * rand() / (RAND_MAX + 1.0f);
        cloud.points[i].z = 1024 * rand() / (RAND_MAX + 1.0f);
    }
    pcl::io::savePCDFileASCII("test_pcd.pcd", cloud);
    std::cerr << "Saved " << cloud.points.size() << " data points to test_pcd.pcd." << std::endl;
    for (std::size_t i = 0; i < cloud.points.size(); ++i)
        std::cerr << "    " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;
    return (0);
}

输出下图(数字可能不同),则表示安装成功!

 

参考:

1.Win10系统PCL + VS2019的安装_★ James Liu @ CSDN-程序员宅基地 - 程序员宅基地 (cxyzjd.com)

2.VS2019 PCL1.10.1 安装配置方法 - 知乎 (zhihu.com)
3.(43条消息) vs2013中math_PCL1.8.0+VS2013+Win10 x64的配置教程_纤雀的博客-CSDN博客
posted on 2019-05-26 20:48  一杯明月  阅读(13370)  评论(9编辑  收藏  举报