VS 配置 PCL

626 阅读10分钟

@TOC

1问题描述如有疑问可留言沟通交流Ⅰ 1问题描述:^{如有疑问可留言沟通交流}

1.Visual Studio2017 配置 PointCloudLibrary1.12.1?[转 Ⅰ 3]
2.VS版本选择?[转 Ⅲ 0.0]
3.windows安装PCL?[转 Ⅲ 0.1]

2问题本质:如有疑问可留言沟通交流Ⅰ 2问题本质: ^{如有疑问可留言沟通交流}

windows - Visual studio 配置 PCL

3问题解决:如有疑问可留言沟通交流Ⅰ 3问题解决: ^{如有疑问可留言沟通交流}

演示版本 (其他 系统平台 的各种VS版本安装各种PCL版本可以参考一下):

  • Windows10
  • VS 2017 、PCL 1.12.1

解决步骤:

0写在前面版本说如有疑问可留言沟通交流Ⅱ 0 写在前面 - 版本说明^{如有疑问可留言沟通交流}

Ⅲ 0.0 VS版本选择

如果安装了不适合的vs版本,导致软件启动慢、启动盘占满、影响效率。因此我们有必要根据电脑性能选择合适的版本,VS版本选择可参考下表:

C盘可用容量VS安装盘可用容量VS可选版本VS推荐版本
20G+50G+2017及以上最新版
10G+40G+2017以下2015
7G+8G+2010及以下2010

上表是根据C盘容量大致参考,VS要求的系统具体参数参见 VS官方,下图展示了Visual Studio 2017 所需要求:
Visual Studio 2017 所需系统要求.png
鉴于电脑购置资金受限,因此不推荐安装VS到C盘(我安装的是D盘),尽管如此VS的安装还是会消耗C盘容量,咱也不知道为啥。为啥会说这个VS版本,因为PCL版本上面有标记VS版本,可能是推荐适配吧,所以电脑性能应 ≥ VS所需硬件性能 ≥ PCL推荐VS版本

Ⅲ 0.1 PCL版本选择

PCL发行版本: Releases · PointCloudLibrary
可以根据自己的需求选择合适的PCL版本,这里使用官方编译好的 "AllInOne-msvc2019-win64" 文件:

PCL-1.12.1-AllInOne-msvc2019-win64.exe
pcl-1.12.1-pdb-msvc2019-win64.zip
PCL 1.12.1官方发行版Github.png

VS安装没什么可说的,所以这里就不赘述了,如果有需求可以私聊我补上。

1PCL安装说如有疑问可留言沟通交流Ⅱ 1 PCL安装说明^{如有疑问可留言沟通交流}

1.1 两个文件下载后,双击PCL-1.12.1-AllInOne-msvc2019-win64.exe进行安装:

双击安装-下一步.png
点击"下一步"
我接受.png
点击"我接收"
下一步.png
选择: "Do not add PCL to the system PATH"
取消勾选: "Create PCL Desktop Icon"
点击"下一步"
image.png
选择安装路径, 点击"下一步"
image.png
点击"下一步"
image.png
点击"安装",稍等片刻,安装完成。

1.2 片刻之后,会弹出一个OpenNI2的安装窗口。建议把OpenNI2安装在3rdParty文件夹里,即D:\PCL 1.12.1\3rdParty(当然,也可以自己设置路径,一定要记住路径,因为下面的配置要用到)
OpenNI2安装结束之后就完成了点云库的完整安装。emmmm~也可能没有弹窗直接安装完成...
惊不惊喜 意不意外.jpg
没关系,小场面,不要慌。不管有没有弹窗我们来查看一下目录即可:

PCL安装文件夹:
PCL安装文件夹.png
3rdParty文件夹:
3rdParty文件夹.png
特别注意 OpenNI2文件夹:
OpenNI2文件夹.png 如果 OpenNI2文件夹 下只有一个文件OpenNI-Windows-x64-2.2.msi, 那么就是默认安装到C盘了。(OpenNI是独立于PCL的一个应用程序)
别问我为啥知道,我这边因为 电脑配置资金不足、C盘容量紧张 就把 OpenNI 给卸载了,然后双击OpenNI-Windows-x64-2.2.msi安装到指定目录。
OpenNI 安装到指定目录.png

1.3 解压pcl-1.11.0-pdb-msvc2019-win64.zip文件,将解压得到的文件夹中的所有*.pdb移动到 D:\PCL 1.12.1\bin (PCL安装路径中的bin文件夹)
将所有*.pdb移动到bin文件夹.png

2配置环境变如有疑问可留言沟通交流Ⅱ 2 配置环境变量^{如有疑问可留言沟通交流}

很多人安装PCL都会遇到这一环节,这边手动配置环境变量(右键点击此电脑-属性-高级系统设置-高级选项卡-环境变量):
配置环境变量.png

2.1 打开系统环境变量,查看系统变量是否包含:

OPENNI2_INCLUDE64
OPENNI2_LIB64
OPENNI2_REDIST64
PCL_ROOT

如果不包含就手动补上,注意OpenNI安装目录。

2.2 双击系统变量中的Path,再将以下的目录添加到Path中(注意最后一个OpenNI2的路径,要和自己刚刚安装的路径一样才行):

%PCL_ROOT%\bin
%PCL_ROOT%\3rdParty\VTK\bin
%PCL_ROOT%\3rdParty\FLANN\bin
%OPENNI2_REDIST64%
%PCL_ROOT%\3rdParty\Qhull\bin
%PCL_ROOT%\3rdParty\OpenNI2\Tools

世界上没有十全十美、完美无缺的事物,Windows也一样,当你新建完所有的环境变量之后点击确定,叮咚~又来了一个惊喜:
此环境变量太大, 此对话框允许将值设置为最长2047个字符.png
这边建议清理无效的系统变量,详情参考,当前,也可以自行百度解决。

2.3 环境变量添加成功后,重启电脑使得环境变量生效。

3配置VS项目属如有疑问可留言沟通交流Ⅱ 3 配置VS项目属性^{如有疑问可留言沟通交流}

打开VS2017新建空项目,项目名称、位置自定义:
新建VS空项目.png
首先确保编译环境是x64,我这里选择的是Release版本,Debug版本配置只有一步不一样,其他都是一样的,我会在下文中指出。然后推荐使用新建属性表,这样可以配置多个版本,在需要的时候直接添加对应的属性表就可以,如果全部添加在自带的属性表中,以后添加的版本太多或者添加的其他库太多会导致灾难性的后果:配置属性冲突等…

Ⅲ 3.0 打开属性管理器(依次点击 视图-其他窗口-属性管理器)

属性管理器.png
在对应的 属性管理器 中右键 属性-添加新项目属性表(名字自定义)
新建项目属性表.png

Release|X64 —> "release64PCL"
Debug|X64 —> "debug64PCL"

进入项目属性表.png

Ⅲ 3.1 配置属性

Ⅳ 3.1.1 包含目录

通用属性 >> VC++目录 >> 包含目录 中添加如下7个包含目录(注意最后一个OpenNI2的路径,要和自己刚刚安装的路径一致): 通用属性 >> VC++目录 >> 包含目录.png

D:\PCL 1.12.1\include\pcl-1.12
D:\PCL 1.12.1\3rdParty\Boost\include\boost-1_78
D:\PCL 1.12.1\3rdParty\Eigen\eigen3
D:\PCL 1.12.1\3rdParty\FLANN\include
D:\PCL 1.12.1\3rdParty\OpenNI2\Include
D:\PCL 1.12.1\3rdParty\Qhull\include
D:\PCL 1.12.1\3rdParty\VTK\include\vtk-9.1

Ⅳ 3.1.2 库目录

通用属性 >> VC++目录 >> 库目录 中添加如下6个库目录(注意最后一个OpenNI2的路径,要和自己刚刚安装的路径一致):
通用属性 >> VC++目录 >> 库目录.png

D:\PCL 1.12.1\lib
D:\PCL 1.12.1\3rdParty\Boost\lib
D:\PCL 1.12.1\3rdParty\FLANN\lib
D:\PCL 1.12.1\3rdParty\OpenNI2\Lib
D:\PCL 1.12.1\3rdParty\Qhull\lib
D:\PCL 1.12.1\3rdParty\VTK\lib

Ⅳ 3.1.3 C/C++ 预处理器定义

通用属性 >> C/C++ >> 预处理器 >> 预处理器定义 中添加: C/C++ >> 预处理器 >> 预处理器定义.png

_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING

Ⅳ 3.1.4 C/C++ SDL检查

通用属性 >> C/C++ >> 所有选项 >> SDL检查 改为 C/C++ >> 所有选项 >> SDL检查.png

Ⅳ 3.1.5 附加依赖项

最后,在通用属性 >> 链接器 >> 输入 >> 附加依赖项 中添加对应的 *.lib 文件(PCL的*.lib文件和第三方库中VTK的*.lib文件)。

debug模式下 填写如下159个 *d.lib文件名:

库文件路径: PCL(D:\PCL 1.12.1\lib) 和 VTK(D:\PCL 1.12.1\3rdParty\VTK\lib)

1. pcl_commond.lib
2. pcl_featuresd.lib
3. pcl_filtersd.lib
4. pcl_io_plyd.lib
5. pcl_iod.lib
6. pcl_kdtreed.lib
7. pcl_keypointsd.lib
8. pcl_mld.lib
9. pcl_octreed.lib
10. pcl_outofcored.lib
11. pcl_peopled.lib
12. pcl_recognitiond.lib
13. pcl_registrationd.lib
14. pcl_sample_consensusd.lib
15. pcl_searchd.lib
16. pcl_segmentationd.lib
17. pcl_stereod.lib
18. pcl_surfaced.lib
19. pcl_trackingd.lib
20. pcl_visualizationd.lib
21. vtkcgns-9.1d.lib
22. vtkChartsCore-9.1d.lib
23. vtkCommonColor-9.1d.lib
24. vtkCommonComputationalGeometry-9.1d.lib
25. vtkCommonCore-9.1d.lib
26. vtkCommonDataModel-9.1d.lib
27. vtkCommonExecutionModel-9.1d.lib
28. vtkCommonMath-9.1d.lib
29. vtkCommonMisc-9.1d.lib
30. vtkCommonSystem-9.1d.lib
31. vtkCommonTransforms-9.1d.lib
32. vtkDICOMParser-9.1d.lib
33. vtkDomainsChemistry-9.1d.lib
34. vtkDomainsChemistryOpenGL2-9.1d.lib
35. vtkdoubleconversion-9.1d.lib
36. vtkexodusII-9.1d.lib
37. vtkexpat-9.1d.lib
38. vtkFiltersAMR-9.1d.lib
39. vtkFiltersCore-9.1d.lib
40. vtkFiltersExtraction-9.1d.lib
41. vtkFiltersFlowPaths-9.1d.lib
42. vtkFiltersGeneral-9.1d.lib
43. vtkFiltersGeneric-9.1d.lib
44. vtkFiltersGeometry-9.1d.lib
45. vtkFiltersHybrid-9.1d.lib
46. vtkFiltersHyperTree-9.1d.lib
47. vtkFiltersImaging-9.1d.lib
48. vtkFiltersModeling-9.1d.lib
49. vtkFiltersParallel-9.1d.lib
50. vtkFiltersParallelImaging-9.1d.lib
51. vtkFiltersPoints-9.1d.lib
52. vtkFiltersProgrammable-9.1d.lib
53. vtkFiltersSelection-9.1d.lib
54. vtkFiltersSMP-9.1d.lib
55. vtkFiltersSources-9.1d.lib
56. vtkFiltersStatistics-9.1d.lib
57. vtkFiltersTexture-9.1d.lib
58. vtkFiltersTopology-9.1d.lib
59. vtkFiltersVerdict-9.1d.lib
60. vtkfmt-9.1d.lib
61. vtkfreetype-9.1d.lib
62. vtkGeovisCore-9.1d.lib
63. vtkgl2ps-9.1d.lib
64. vtkglew-9.1d.lib
65. vtkhdf5_hl-9.1d.lib
66. vtkhdf5-9.1d.lib
67. vtkImagingColor-9.1d.lib
68. vtkImagingCore-9.1d.lib
69. vtkImagingFourier-9.1d.lib
70. vtkImagingGeneral-9.1d.lib
71. vtkImagingHybrid-9.1d.lib
72. vtkImagingMath-9.1d.lib
73. vtkImagingMorphological-9.1d.lib
74. vtkImagingSources-9.1d.lib
75. vtkImagingStatistics-9.1d.lib
76. vtkImagingStencil-9.1d.lib
77. vtkInfovisCore-9.1d.lib
78. vtkInfovisLayout-9.1d.lib
79. vtkInteractionImage-9.1d.lib
80. vtkInteractionStyle-9.1d.lib
81. vtkInteractionWidgets-9.1d.lib
82. vtkIOAMR-9.1d.lib
83. vtkIOAsynchronous-9.1d.lib
84. vtkIOCGNSReader-9.1d.lib
85. vtkIOChemistry-9.1d.lib
86. vtkIOCityGML-9.1d.lib
87. vtkIOCONVERGECFD-9.1d.lib
88. vtkIOCore-9.1d.lib
89. vtkIOEnSight-9.1d.lib
90. vtkIOExodus-9.1d.lib
91. vtkIOExport-9.1d.lib
92. vtkIOExportGL2PS-9.1d.lib
93. vtkIOExportPDF-9.1d.lib
94. vtkIOGeometry-9.1d.lib
95. vtkIOHDF-9.1d.lib
96. vtkIOImage-9.1d.lib
97. vtkIOImport-9.1d.lib
98. vtkIOInfovis-9.1d.lib
99. vtkIOIOSS-9.1d.lib
100. vtkIOLegacy-9.1d.lib
101. vtkIOLSDyna-9.1d.lib
102. vtkIOMINC-9.1d.lib
103. vtkIOMotionFX-9.1d.lib
104. vtkIOMovie-9.1d.lib
105. vtkIONetCDF-9.1d.lib
106. vtkIOOggTheora-9.1d.lib
107. vtkIOParallel-9.1d.lib
108. vtkIOParallelXML-9.1d.lib
109. vtkIOPLY-9.1d.lib
110. vtkIOSegY-9.1d.lib
111. vtkIOSQL-9.1d.lib
112. vtkioss-9.1d.lib
113. vtkIOTecplotTable-9.1d.lib
114. vtkIOVeraOut-9.1d.lib
115. vtkIOVideo-9.1d.lib
116. vtkIOXML-9.1d.lib
117. vtkIOXMLParser-9.1d.lib
118. vtkjpeg-9.1d.lib
119. vtkjsoncpp-9.1d.lib
120. vtkkissfft-9.1d.lib
121. vtklibharu-9.1d.lib
122. vtklibproj-9.1d.lib
123. vtklibxml2-9.1d.lib
124. vtkloguru-9.1d.lib
125. vtklz4-9.1d.lib
126. vtklzma-9.1d.lib
127. vtkmetaio-9.1d.lib
128. vtknetcdf-9.1d.lib
129. vtkogg-9.1d.lib
130. vtkParallelCore-9.1d.lib
131. vtkParallelDIY-9.1d.lib
132. vtkpng-9.1d.lib
133. vtkpugixml-9.1d.lib
134. vtkRenderingAnnotation-9.1d.lib
135. vtkRenderingContext2D-9.1d.lib
136. vtkRenderingContextOpenGL2-9.1d.lib
137. vtkRenderingCore-9.1d.lib
138. vtkRenderingFreeType-9.1d.lib
139. vtkRenderingGL2PSOpenGL2-9.1d.lib
140. vtkRenderingImage-9.1d.lib
141. vtkRenderingLabel-9.1d.lib
142. vtkRenderingLOD-9.1d.lib
143. vtkRenderingOpenGL2-9.1d.lib
144. vtkRenderingSceneGraph-9.1d.lib
145. vtkRenderingUI-9.1d.lib
146. vtkRenderingVolume-9.1d.lib
147. vtkRenderingVolumeOpenGL2-9.1d.lib
148. vtkRenderingVtkJS-9.1d.lib
149. vtksqlite-9.1d.lib
150. vtksys-9.1d.lib
151. vtkTestingRendering-9.1d.lib
152. vtktheora-9.1d.lib
153. vtktiff-9.1d.lib
154. vtkverdict-9.1d.lib
155. vtkViewsContext2D-9.1d.lib
156. vtkViewsCore-9.1d.lib
157. vtkViewsInfovis-9.1d.lib
158. vtkWrappingTools-9.1d.lib
159. vtkzlib-9.1d.lib

debug模式下 填写 *d.lib文件.png

release模式下 填写如下159个 *.lib文件名:

库文件路径: PCL(D:\PCL 1.12.1\lib) 和 VTK(D:\PCL 1.12.1\3rdParty\VTK\lib)

1. pcl_common.lib
2. pcl_features.lib
3. pcl_filters.lib
4. pcl_io.lib
5. pcl_io_ply.lib
6. pcl_kdtree.lib
7. pcl_keypoints.lib
8. pcl_ml.lib
9. pcl_octree.lib
10. pcl_outofcore.lib
11. pcl_people.lib
12. pcl_recognition.lib
13. pcl_registration.lib
14. pcl_sample_consensus.lib
15. pcl_search.lib
16. pcl_segmentation.lib
17. pcl_stereo.lib
18. pcl_surface.lib
19. pcl_tracking.lib
20. pcl_visualization.lib
21. vtkcgns-9.1.lib
22. vtkChartsCore-9.1.lib
23. vtkCommonColor-9.1.lib
24. vtkCommonComputationalGeometry-9.1.lib
25. vtkCommonCore-9.1.lib
26. vtkCommonDataModel-9.1.lib
27. vtkCommonExecutionModel-9.1.lib
28. vtkCommonMath-9.1.lib
29. vtkCommonMisc-9.1.lib
30. vtkCommonSystem-9.1.lib
31. vtkCommonTransforms-9.1.lib
32. vtkDICOMParser-9.1.lib
33. vtkDomainsChemistry-9.1.lib
34. vtkDomainsChemistryOpenGL2-9.1.lib
35. vtkdoubleconversion-9.1.lib
36. vtkexodusII-9.1.lib
37. vtkexpat-9.1.lib
38. vtkFiltersAMR-9.1.lib
39. vtkFiltersCore-9.1.lib
40. vtkFiltersExtraction-9.1.lib
41. vtkFiltersFlowPaths-9.1.lib
42. vtkFiltersGeneral-9.1.lib
43. vtkFiltersGeneric-9.1.lib
44. vtkFiltersGeometry-9.1.lib
45. vtkFiltersHybrid-9.1.lib
46. vtkFiltersHyperTree-9.1.lib
47. vtkFiltersImaging-9.1.lib
48. vtkFiltersModeling-9.1.lib
49. vtkFiltersParallel-9.1.lib
50. vtkFiltersParallelImaging-9.1.lib
51. vtkFiltersPoints-9.1.lib
52. vtkFiltersProgrammable-9.1.lib
53. vtkFiltersSelection-9.1.lib
54. vtkFiltersSMP-9.1.lib
55. vtkFiltersSources-9.1.lib
56. vtkFiltersStatistics-9.1.lib
57. vtkFiltersTexture-9.1.lib
58. vtkFiltersTopology-9.1.lib
59. vtkFiltersVerdict-9.1.lib
60. vtkfmt-9.1.lib
61. vtkfreetype-9.1.lib
62. vtkGeovisCore-9.1.lib
63. vtkgl2ps-9.1.lib
64. vtkglew-9.1.lib
65. vtkhdf5_hl-9.1.lib
66. vtkhdf5-9.1.lib
67. vtkImagingColor-9.1.lib
68. vtkImagingCore-9.1.lib
69. vtkImagingFourier-9.1.lib
70. vtkImagingGeneral-9.1.lib
71. vtkImagingHybrid-9.1.lib
72. vtkImagingMath-9.1.lib
73. vtkImagingMorphological-9.1.lib
74. vtkImagingSources-9.1.lib
75. vtkImagingStatistics-9.1.lib
76. vtkImagingStencil-9.1.lib
77. vtkInfovisCore-9.1.lib
78. vtkInfovisLayout-9.1.lib
79. vtkInteractionImage-9.1.lib
80. vtkInteractionStyle-9.1.lib
81. vtkInteractionWidgets-9.1.lib
82. vtkIOAMR-9.1.lib
83. vtkIOAsynchronous-9.1.lib
84. vtkIOCGNSReader-9.1.lib
85. vtkIOChemistry-9.1.lib
86. vtkIOCityGML-9.1.lib
87. vtkIOCONVERGECFD-9.1.lib
88. vtkIOCore-9.1.lib
89. vtkIOEnSight-9.1.lib
90. vtkIOExodus-9.1.lib
91. vtkIOExport-9.1.lib
92. vtkIOExportGL2PS-9.1.lib
93. vtkIOExportPDF-9.1.lib
94. vtkIOGeometry-9.1.lib
95. vtkIOHDF-9.1.lib
96. vtkIOImage-9.1.lib
97. vtkIOImport-9.1.lib
98. vtkIOInfovis-9.1.lib
99. vtkIOIOSS-9.1.lib
100. vtkIOLegacy-9.1.lib
101. vtkIOLSDyna-9.1.lib
102. vtkIOMINC-9.1.lib
103. vtkIOMotionFX-9.1.lib
104. vtkIOMovie-9.1.lib
105. vtkIONetCDF-9.1.lib
106. vtkIOOggTheora-9.1.lib
107. vtkIOParallel-9.1.lib
108. vtkIOParallelXML-9.1.lib
109. vtkIOPLY-9.1.lib
110. vtkIOSegY-9.1.lib
111. vtkIOSQL-9.1.lib
112. vtkioss-9.1.lib
113. vtkIOTecplotTable-9.1.lib
114. vtkIOVeraOut-9.1.lib
115. vtkIOVideo-9.1.lib
116. vtkIOXML-9.1.lib
117. vtkIOXMLParser-9.1.lib
118. vtkjpeg-9.1.lib
119. vtkjsoncpp-9.1.lib
120. vtkkissfft-9.1.lib
121. vtklibharu-9.1.lib
122. vtklibproj-9.1.lib
123. vtklibxml2-9.1.lib
124. vtkloguru-9.1.lib
125. vtklz4-9.1.lib
126. vtklzma-9.1.lib
127. vtkmetaio-9.1.lib
128. vtknetcdf-9.1.lib
129. vtkogg-9.1.lib
130. vtkParallelCore-9.1.lib
131. vtkParallelDIY-9.1.lib
132. vtkpng-9.1.lib
133. vtkpugixml-9.1.lib
134. vtkRenderingAnnotation-9.1.lib
135. vtkRenderingContext2D-9.1.lib
136. vtkRenderingContextOpenGL2-9.1.lib
137. vtkRenderingCore-9.1.lib
138. vtkRenderingFreeType-9.1.lib
139. vtkRenderingGL2PSOpenGL2-9.1.lib
140. vtkRenderingImage-9.1.lib
141. vtkRenderingLabel-9.1.lib
142. vtkRenderingLOD-9.1.lib
143. vtkRenderingOpenGL2-9.1.lib
144. vtkRenderingSceneGraph-9.1.lib
145. vtkRenderingUI-9.1.lib
146. vtkRenderingVolume-9.1.lib
147. vtkRenderingVolumeOpenGL2-9.1.lib
148. vtkRenderingVtkJS-9.1.lib
149. vtksqlite-9.1.lib
150. vtksys-9.1.lib
151. vtkTestingRendering-9.1.lib
152. vtktheora-9.1.lib
153. vtktiff-9.1.lib
154. vtkverdict-9.1.lib
155. vtkViewsContext2D-9.1.lib
156. vtkViewsCore-9.1.lib
157. vtkViewsInfovis-9.1.lib
158. vtkWrappingTools-9.1.lib
159. vtkzlib-9.1.lib

release模式下 填写 *.lib文件.png

注:VS中release模式和debug模式配置只有这一步不一样,其他配置内容都是一样的。

4验证测如有疑问可留言沟通交流Ⅱ 4 验证测试^{如有疑问可留言沟通交流}

至此VS项目的环境配置初步完成,可以尝试运行个例程验证一下,新建一个main.cpp,代码如下:

#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>   //pcd 读写类相关
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h> //PCL 支持的点云文件类型
#include <fstream>  
#include <string>  
#include <vector> 

using namespace std;

int main()
{
	typedef struct tagPOINT_3D
	{
		double x;  //mm world coordinate x  
		double y;  //mm world coordinate y  
		double z;  //mm world coordinate z  
		double r;
	}POINT_WORLD;


	// 加载txt数据
	int number_Txt;
	FILE *fp_txt;
	tagPOINT_3D TxtPoint;
	vector<tagPOINT_3D> m_vTxtPoints;
	fp_txt = fopen("test.txt", "r");
	if (fp_txt)
	{
		while (fscanf(fp_txt, "%lf %lf %lf", &TxtPoint.x, &TxtPoint.y, &TxtPoint.z) != EOF)
		{
			m_vTxtPoints.push_back(TxtPoint);
		}
	}
	else
		cout << "txt数据加载失败!" << endl;
	number_Txt = m_vTxtPoints.size();
	//pcl::PointCloud<pcl::PointXYZ> cloud;
	//这里使用“PointXYZ”是因为我后面给的点云信息是包含的三维坐标,同时还有点云信息包含的rgb颜色信息的或者还有包含rgba颜色和强度信息。
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
	// Fill in the cloud data  
	cloud->width = number_Txt;
	cloud->height = 1;
	cloud->is_dense = false;
	cloud->points.resize(cloud->width * cloud->height);
	for (size_t i = 0; i < cloud->points.size(); ++i)
	{
		cloud->points[i].x = m_vTxtPoints[i].x;
		cloud->points[i].y = m_vTxtPoints[i].y;
		cloud->points[i].z = m_vTxtPoints[i].z;
	}
	pcl::io::savePCDFileASCII("txt2pcd_bunny1.pcd", *cloud);
	std::cerr << "Saved " << cloud->points.size() << " data points to txt2pcd.pcd." << std::endl;

	//for (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;

	// PCL Visualizer
	// Viewer  
	pcl::visualization::PCLVisualizer viewer("Cloud Viewer");
	viewer.addPointCloud(cloud);
	viewer.setBackgroundColor(0, 0, 0);

	viewer.spin();
	system("pause");
	return 0;
}

运行结果: 运行结果.png

5潜在问如有疑问可留言沟通交流Ⅱ 5 潜在问题^{如有疑问可留言沟通交流}

  • Q1.Part.4运行提示: 系统错误 由于找不到VCRUNTIME1401D.d,无法继续执行代码.如图
    系统错误 由于找不到VCRUNTIME1401D.d,无法继续执行代码.png

A1: 项目中使用其它动态链接库(vcruntime140_1D.dll),但电脑系统中没有,虽然编译通过了,但是运行时中断,报错缺少vcruntime140_1D.dll。解决方法无疑就是找到这个.DLL,然后放到电脑系统中。点击 动态链接库下载专区 搜索想要的.DLL,点击Download,随后把下载的文件放到系统路径C:\Windows\System32中即可。参考

  • Q2.后续编程调试模式下可能会遇到"由于找不到pcl_commond.dll,无法继续执行代码。重新安装程序可 能会解决此问题。如图
    找不到pcl_commond.dll.png

A2: 遇到这个提示不要慌,如果按照上述操作一路配置完成后,那我们就检查一下:

A2-1.在目录D:\PCL 1.12.1\bin中存在pcl_commond.dll
pcl_commond.dll.png
A2-2.存在环境变量 PCL_ROOT
PCL_ROOT.png
A2-3.存在环境变量 %PCL_ROOT%\bin
%PCL_ROOT%\bin.png
A2-4.1 打开Debug属性页(注意 此处为右键 "Debug|X64" )
右键 "Debug|X64".png
A2-4.2 配置Debug属性页(通用属性-调试-环境)
通用属性-调试-环境.png
A2-4.3 填写 Debug环境变量: PATH=$(PCL_ROOT)\bin;$(PCL_ROOT)\3rdParty\FLANN\bin;$(PCL_ROOT)\3rdParty\VTK\bin;$(PCL_ROOT)\Qhull\bin;$(PCL_ROOT)\3rdParty\OpenNI2\Tools;$(PATH)
调试环境变量.png

6友情链如有疑问可留言沟通交流Ⅱ 6 友情链接^{如有疑问可留言沟通交流}

  1. 点云文章专栏
  2. Visual studio文章专栏
  3. ...

代码调试不易,转载请标明出处!
如果感觉本文对您有帮助,请留下您的赞,您的支持是我坚持写作分享的最大动力,谢谢!

References
0.PointCloudLibrary官方
1.PointCloudLibrary发行版本
2.VS版本选择
3.环境变量太大问题解决
4.win10VS2017配置PCL1.9.1
5.win10VS2017配置PCL1.8.1
6.win10VS2017配置PCL1.9.1
7.点云处理C++库PCL安装
可以肯定的是学海无涯,这篇文章也会随着对 VS、PCL的深入学习而持续更新, 欢迎各位在评论区留言进行探讨交流。