PCL在VS上的环境配置

目录
  1. 在教程之前
  2. 配置VS环境
    1. 第一次配置
    2. 新建项目的配置
TOC

做本研(本科生研究)写代码的时候,经常会和C++的点云库PCL打交道,但是PCL库在宇宙IDE的VS的环境配置实在是太魔鬼啦,所以写一点东西,下一次说不定会容易些。

配置环境:Win11 + VS2022


在教程之前

首先,我们需要下一个PCL的库,由于年代久远,咱已经忘了是在哪里下的了。不过不要紧,现下一个就好,可能还要单独下一些第三方库,比如OpenNI2什么的。跟着安装程序走就好,只要记得最后自己安装在哪个文件夹就行(最好别丢C盘,文件有点大)

配置VS环境

第一次配置

第一次配置环境时,需要把一些链接放到系统环境变量里,粗暴一点的做法是把相关dll文件放在C盘的System32里,报什么错放什么。

但正常的做法应该是把第三方库和PCL库的bin文件地址写入环境变量。具体的教程网上很多。

新建项目的配置

首先确定在统一的Debug或者Release模式下,然后打开头顶菜单「项目」的「属性」。

在「VC++ 目录」的「包含目录」里敲入PCL以及第三方库的include文件的绝对地址,然后在下面的「库目录」里敲入它们的lib的绝对地址。

然后在「链接器」的「输入」中的「附加依赖项」里添加所有的lib文件名,注意这时候不需要绝对地址,但要带后缀的文件名,可以在文件夹的终端里使用:

1
attrib >>filename.txt

就会在当前文件夹里生成一个filenametxt文件,里面就写了所有的文件信息,用Control+F替换不需要的部分为「无」就可以用来复制粘贴了。

我这里写的有:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
pcl_common.lib
pcl_commond.lib
pcl_features.lib
pcl_featuresd.lib
pcl_filters.lib
pcl_filtersd.lib
pcl_io.lib
pcl_iod.lib
pcl_io_ply.lib
pcl_io_plyd.lib
pcl_kdtree.lib
pcl_kdtreed.lib
pcl_keypoints.lib
pcl_keypointsd.lib
pcl_ml.lib
pcl_mld.lib
pcl_octree.lib
pcl_octreed.lib
pcl_outofcore.lib
pcl_outofcored.lib
pcl_people.lib
pcl_peopled.lib
pcl_recognition.lib
pcl_recognitiond.lib
pcl_registration.lib
pcl_registrationd.lib
pcl_sample_consensus.lib
pcl_sample_consensusd.lib
pcl_search.lib
pcl_searchd.lib
pcl_segmentation.lib
pcl_segmentationd.lib
pcl_stereo.lib
pcl_stereod.lib
pcl_surface.lib
pcl_surfaced.lib
pcl_tracking.lib
pcl_trackingd.lib
pcl_visualization.lib
pcl_visualizationd.lib
vtkcgns-9.1.lib
vtkcgns-9.1d.lib
vtkChartsCore-9.1.lib
vtkChartsCore-9.1d.lib
vtkCommonColor-9.1.lib
vtkCommonColor-9.1d.lib
vtkCommonComputationalGeometry-9.1.lib
vtkCommonComputationalGeometry-9.1d.lib
vtkCommonCore-9.1.lib
vtkCommonCore-9.1d.lib
vtkCommonDataModel-9.1.lib
vtkCommonDataModel-9.1d.lib
vtkCommonExecutionModel-9.1.lib
vtkCommonExecutionModel-9.1d.lib
vtkCommonMath-9.1.lib
vtkCommonMath-9.1d.lib
vtkCommonMisc-9.1.lib
vtkCommonMisc-9.1d.lib
vtkCommonSystem-9.1.lib
vtkCommonSystem-9.1d.lib
vtkCommonTransforms-9.1.lib
vtkCommonTransforms-9.1d.lib
vtkDICOMParser-9.1.lib
vtkDICOMParser-9.1d.lib
vtkDomainsChemistry-9.1.lib
vtkDomainsChemistry-9.1d.lib
vtkDomainsChemistryOpenGL2-9.1.lib
vtkDomainsChemistryOpenGL2-9.1d.lib
vtkdoubleconversion-9.1.lib
vtkdoubleconversion-9.1d.lib
vtkexodusII-9.1.lib
vtkexodusII-9.1d.lib
vtkexpat-9.1.lib
vtkexpat-9.1d.lib
vtkFiltersAMR-9.1.lib
vtkFiltersAMR-9.1d.lib
vtkFiltersCore-9.1.lib
vtkFiltersCore-9.1d.lib
vtkFiltersExtraction-9.1.lib
vtkFiltersExtraction-9.1d.lib
vtkFiltersFlowPaths-9.1.lib
vtkFiltersFlowPaths-9.1d.lib
vtkFiltersGeneral-9.1.lib
vtkFiltersGeneral-9.1d.lib
vtkFiltersGeneric-9.1.lib
vtkFiltersGeneric-9.1d.lib
vtkFiltersGeometry-9.1.lib
vtkFiltersGeometry-9.1d.lib
vtkFiltersHybrid-9.1.lib
vtkFiltersHybrid-9.1d.lib
vtkFiltersHyperTree-9.1.lib
vtkFiltersHyperTree-9.1d.lib
vtkFiltersImaging-9.1.lib
vtkFiltersImaging-9.1d.lib
vtkFiltersModeling-9.1.lib
vtkFiltersModeling-9.1d.lib
vtkFiltersParallel-9.1.lib
vtkFiltersParallel-9.1d.lib
vtkFiltersParallelImaging-9.1.lib
vtkFiltersParallelImaging-9.1d.lib
vtkFiltersPoints-9.1.lib
vtkFiltersPoints-9.1d.lib
vtkFiltersProgrammable-9.1.lib
vtkFiltersProgrammable-9.1d.lib
vtkFiltersSelection-9.1.lib
vtkFiltersSelection-9.1d.lib
vtkFiltersSMP-9.1.lib
vtkFiltersSMP-9.1d.lib
vtkFiltersSources-9.1.lib
vtkFiltersSources-9.1d.lib
vtkFiltersStatistics-9.1.lib
vtkFiltersStatistics-9.1d.lib
vtkFiltersTexture-9.1.lib
vtkFiltersTexture-9.1d.lib
vtkFiltersTopology-9.1.lib
vtkFiltersTopology-9.1d.lib
vtkFiltersVerdict-9.1.lib
vtkFiltersVerdict-9.1d.lib
vtkfmt-9.1.lib
vtkfmt-9.1d.lib
vtkfreetype-9.1.lib
vtkfreetype-9.1d.lib
vtkGeovisCore-9.1.lib
vtkGeovisCore-9.1d.lib
vtkgl2ps-9.1.lib
vtkgl2ps-9.1d.lib
vtkglew-9.1.lib
vtkglew-9.1d.lib
vtkhdf5-9.1.lib
vtkhdf5-9.1d.lib
vtkhdf5_hl-9.1.lib
vtkhdf5_hl-9.1d.lib
vtkImagingColor-9.1.lib
vtkImagingColor-9.1d.lib
vtkImagingCore-9.1.lib
vtkImagingCore-9.1d.lib
vtkImagingFourier-9.1.lib
vtkImagingFourier-9.1d.lib
vtkImagingGeneral-9.1.lib
vtkImagingGeneral-9.1d.lib
vtkImagingHybrid-9.1.lib
vtkImagingHybrid-9.1d.lib
vtkImagingMath-9.1.lib
vtkImagingMath-9.1d.lib
vtkImagingMorphological-9.1.lib
vtkImagingMorphological-9.1d.lib
vtkImagingSources-9.1.lib
vtkImagingSources-9.1d.lib
vtkImagingStatistics-9.1.lib
vtkImagingStatistics-9.1d.lib
vtkImagingStencil-9.1.lib
vtkImagingStencil-9.1d.lib
vtkInfovisCore-9.1.lib
vtkInfovisCore-9.1d.lib
vtkInfovisLayout-9.1.lib
vtkInfovisLayout-9.1d.lib
vtkInteractionImage-9.1.lib
vtkInteractionImage-9.1d.lib
vtkInteractionStyle-9.1.lib
vtkInteractionStyle-9.1d.lib
vtkInteractionWidgets-9.1.lib
vtkInteractionWidgets-9.1d.lib
vtkIOAMR-9.1.lib
vtkIOAMR-9.1d.lib
vtkIOAsynchronous-9.1.lib
vtkIOAsynchronous-9.1d.lib
vtkIOCGNSReader-9.1.lib
vtkIOCGNSReader-9.1d.lib
vtkIOChemistry-9.1.lib
vtkIOChemistry-9.1d.lib
vtkIOCityGML-9.1.lib
vtkIOCityGML-9.1d.lib
vtkIOCONVERGECFD-9.1.lib
vtkIOCONVERGECFD-9.1d.lib
vtkIOCore-9.1.lib
vtkIOCore-9.1d.lib
vtkIOEnSight-9.1.lib
vtkIOEnSight-9.1d.lib
vtkIOExodus-9.1.lib
vtkIOExodus-9.1d.lib
vtkIOExport-9.1.lib
vtkIOExport-9.1d.lib
vtkIOExportGL2PS-9.1.lib
vtkIOExportGL2PS-9.1d.lib
vtkIOExportPDF-9.1.lib
vtkIOExportPDF-9.1d.lib
vtkIOGeometry-9.1.lib
vtkIOGeometry-9.1d.lib
vtkIOHDF-9.1.lib
vtkIOHDF-9.1d.lib
vtkIOImage-9.1.lib
vtkIOImage-9.1d.lib
vtkIOImport-9.1.lib
vtkIOImport-9.1d.lib
vtkIOInfovis-9.1.lib
vtkIOInfovis-9.1d.lib
vtkIOIOSS-9.1.lib
vtkIOIOSS-9.1d.lib
vtkIOLegacy-9.1.lib
vtkIOLegacy-9.1d.lib
vtkIOLSDyna-9.1.lib
vtkIOLSDyna-9.1d.lib
vtkIOMINC-9.1.lib
vtkIOMINC-9.1d.lib
vtkIOMotionFX-9.1.lib
vtkIOMotionFX-9.1d.lib
vtkIOMovie-9.1.lib
vtkIOMovie-9.1d.lib
vtkIONetCDF-9.1.lib
vtkIONetCDF-9.1d.lib
vtkIOOggTheora-9.1.lib
vtkIOOggTheora-9.1d.lib
vtkIOParallel-9.1.lib
vtkIOParallel-9.1d.lib
vtkIOParallelXML-9.1.lib
vtkIOParallelXML-9.1d.lib
vtkIOPLY-9.1.lib
vtkIOPLY-9.1d.lib
vtkIOSegY-9.1.lib
vtkIOSegY-9.1d.lib
vtkIOSQL-9.1.lib
vtkIOSQL-9.1d.lib
vtkioss-9.1.lib
vtkioss-9.1d.lib
vtkIOTecplotTable-9.1.lib
vtkIOTecplotTable-9.1d.lib
vtkIOVeraOut-9.1.lib
vtkIOVeraOut-9.1d.lib
vtkIOVideo-9.1.lib
vtkIOVideo-9.1d.lib
vtkIOXML-9.1.lib
vtkIOXML-9.1d.lib
vtkIOXMLParser-9.1.lib
vtkIOXMLParser-9.1d.lib
vtkjpeg-9.1.lib
vtkjpeg-9.1d.lib
vtkjsoncpp-9.1.lib
vtkjsoncpp-9.1d.lib
vtkkissfft-9.1.lib
vtkkissfft-9.1d.lib
vtklibharu-9.1.lib
vtklibharu-9.1d.lib
vtklibproj-9.1.lib
vtklibproj-9.1d.lib
vtklibxml2-9.1.lib
vtklibxml2-9.1d.lib
vtkloguru-9.1.lib
vtkloguru-9.1d.lib
vtklz4-9.1.lib
vtklz4-9.1d.lib
vtklzma-9.1.lib
vtklzma-9.1d.lib
vtkmetaio-9.1.lib
vtkmetaio-9.1d.lib
vtknetcdf-9.1.lib
vtknetcdf-9.1d.lib
vtkogg-9.1.lib
vtkogg-9.1d.lib
vtkParallelCore-9.1.lib
vtkParallelCore-9.1d.lib
vtkParallelDIY-9.1.lib
vtkParallelDIY-9.1d.lib
vtkpng-9.1.lib
vtkpng-9.1d.lib
vtkpugixml-9.1.lib
vtkpugixml-9.1d.lib
vtkRenderingAnnotation-9.1.lib
vtkRenderingAnnotation-9.1d.lib
vtkRenderingContext2D-9.1.lib
vtkRenderingContext2D-9.1d.lib
vtkRenderingContextOpenGL2-9.1.lib
vtkRenderingContextOpenGL2-9.1d.lib
vtkRenderingCore-9.1.lib
vtkRenderingCore-9.1d.lib
vtkRenderingFreeType-9.1.lib
vtkRenderingFreeType-9.1d.lib
vtkRenderingGL2PSOpenGL2-9.1.lib
vtkRenderingGL2PSOpenGL2-9.1d.lib
vtkRenderingImage-9.1.lib
vtkRenderingImage-9.1d.lib
vtkRenderingLabel-9.1.lib
vtkRenderingLabel-9.1d.lib
vtkRenderingLOD-9.1.lib
vtkRenderingLOD-9.1d.lib
vtkRenderingOpenGL2-9.1.lib
vtkRenderingOpenGL2-9.1d.lib
vtkRenderingSceneGraph-9.1.lib
vtkRenderingSceneGraph-9.1d.lib
vtkRenderingUI-9.1.lib
vtkRenderingUI-9.1d.lib
vtkRenderingVolume-9.1.lib
vtkRenderingVolume-9.1d.lib
vtkRenderingVolumeOpenGL2-9.1.lib
vtkRenderingVolumeOpenGL2-9.1d.lib
vtkRenderingVtkJS-9.1.lib
vtkRenderingVtkJS-9.1d.lib
vtksqlite-9.1.lib
vtksqlite-9.1d.lib
vtksys-9.1.lib
vtksys-9.1d.lib
vtkTestingRendering-9.1.lib
vtkTestingRendering-9.1d.lib
vtktheora-9.1.lib
vtktheora-9.1d.lib
vtktiff-9.1.lib
vtktiff-9.1d.lib
vtkverdict-9.1.lib
vtkverdict-9.1d.lib
vtkViewsContext2D-9.1.lib
vtkViewsContext2D-9.1d.lib
vtkViewsCore-9.1.lib
vtkViewsCore-9.1d.lib
vtkViewsInfovis-9.1.lib
vtkViewsInfovis-9.1d.lib
vtkWrappingTools-9.1.lib
vtkWrappingTools-9.1d.lib
vtkzlib-9.1.lib
vtkzlib-9.1d.lib
opencv_world470.lib

不过这些也会随着版本改变的,还是找自己的比较靠谱。

以后也可以将这些保存为一个属性表,方便下次调用。

之后就可以写一个简单的点云程序试试软件是否能好好运行了:(随便找了一个)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/ModelCoefficients.h>
#include <pcl/filters/project_inliers.h>




int main(int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_projected(new pcl::PointCloud<pcl::PointXYZ>);

// Fill in the cloud data
cloud->width = 5;
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 * 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);
}

std::cerr << "Cloud before projection: " << 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;

// Create a set of planar coefficients with X=Y=0,Z=1
pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients());
coefficients->values.resize(4);
coefficients->values[0] = coefficients->values[1] = 0;
coefficients->values[2] = 1.0;
coefficients->values[3] = 0;

// Create the filtering object
pcl::ProjectInliers<pcl::PointXYZ> proj;
proj.setModelType(pcl::SACMODEL_PLANE);
proj.setInputCloud(cloud);
proj.setModelCoefficients(coefficients);
proj.filter(*cloud_projected);

std::cerr << "Cloud after projection: " << std::endl;

for (size_t i = 0; i < cloud_projected->points.size(); ++i)
std::cerr << " " << cloud_projected->points[i].x << " "
<< cloud_projected->points[i].y << " "
<< cloud_projected->points[i].z << std::endl;

system("pause");
return (0);
}
DAR
SON