win10 c++ VsCode配置PCL open3d并显示
- 一、效果图
- 二、配置步骤
- 2.1 安装vscode
- 2.2 pcl-open3d配置
- 2.3 vscode中设置
- 三、测试代码
- 四、注意事项及后续
一、效果图
二、配置步骤
2.1 安装vscode
vscode下载链接
下载中文插件、c++相关插件
2.2 pcl-open3d配置
1)下载配置好的环境(pcl1.11 、open3d0.18)
pcl1.11
pcl下载
open3d-0.18
open3d c++下载
2)自己配置注意事项
pcl 配置
pcl已经博客很多,搜一下就行。
open3d配置
open3d 中fmt glew gluw等库可能需要自己重新编译生成lib,否则后续显示会有问题,可以参考我提供的资源。
2.3 vscode中设置
创建文件夹
随意创建pcl_open3d文件夹,我创建在桌面。
打开文件夹,并新建文件
先进入文件夹,后code .
打开vscode
新建一个test.cpp文件
test.cpp分别测试open3d显示与pcl显示
/**PCL/open3d显示测试
* @Gelou
* 2025-3-16
*/
#include <iostream>
#include <vector>
#include <string>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <open3d/Open3D.h>
using namespace std;
int main()
{
//open3d 显示点云
open3d::geometry::PointCloud CurCloud;
open3d::io::ReadPointCloud("1.pcd", CurCloud);
cout<<"size:"<<CurCloud.points_.size()<<endl;
open3d::visualization::Visualizer vis;
vis.CreateVisualizerWindow("Open3D Point Cloud Viewer", 1024, 768);
vis.AddGeometry(std::make_shared<open3d::geometry::PointCloud>(CurCloud));
vis.Run();
vis.DestroyVisualizerWindow();
//pcl显示点云
pcl::PointCloud<pcl::PointXYZRGB> cloud;
pcl::io::loadPCDFile("1.pcd",cloud);
cout<<"size:"<<cloud.size()<<endl;
pcl::visualization::PCLVisualizer viewer("viewer");
viewer.addPointCloud(cloud.makeShared(),"cloud");
viewer.spin();
return 0;
}
快捷键ctrl +shift +p
进入编辑UI,选择cl.exe路径,设置X64的
随后,下图位置出现c_cpp_properties.json
,设置如下:
我在这地方设置了pcl
与open3d
的路径
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"D:/PCL/PCL1.11.1/include/pcl-1.11",
"D:/PCL/PCL1.11.1/3rdParty/Boost/include/boost-1_74",
"D:/PCL/PCL1.11.1/3rdParty/Eigen/eigen3",
"D:/PCL/PCL1.11.1/3rdParty/FLANN/include",
"D:/PCL/PCL1.11.1/3rdParty/FLANN/include/flann",
"D:/PCL/PCL1.11.1/3rdParty/OpenNI2/Include",
"D:/PCL/PCL1.11.1/3rdParty/Qhull/include",
"D:/PCL/PCL1.11.1/3rdParty/vtk/include/vtk-8.2",
"D:/Open3D/include",
"D:/Open3D/include/open3d/3rdparty"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.19041.0",
"compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x86/cl.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-msvc-x64"
}
],
"version": 4
}
快捷键ctrl +shift +p
,输入task,点击第一个,随后生成task.json文件
我的task.json文件如下,配置了open3d和pcl路径与lib文件:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: cl.exe 生成活动文件",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/MD", // 显式指定动态运行时库
"/I",
"D:/PCL/PCL1.11.1/include/pcl-1.11",
"/I",
"D:/PCL/PCL1.11.1/3rdParty/Eigen/eigen3",
"/I",
"D:/PCL/PCL1.11.1/3rdParty/Boost/include/boost-1_74",
"/I",
"D:/PCL/PCL1.11.1/3rdParty/FLANN/include",
"/I",
"D:/PCL/PCL1.11.1/3rdParty/FLANN/include/flann",
"/I",
"D:/PCL/PCL1.11.1/3rdParty/OpenNI2/Include",
"/I",
"D:/PCL/PCL1.11.1/3rdParty/Qhull/include",
"/I",
"D:/PCL/PCL1.11.1/3rdParty/vtk/include/vtk-8.2",
"/I",
"D:/Open3D/include",
"/I",
"D:/Open3D/include/open3d/3rdparty",
"/nologo",
"/Fe${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}",
"/link",
"/MACHINE:X64", // 强制指定 64 位架构
"/LIBPATH:D:/Open3D/lib",
"glew32.lib",
"glew32s.lib",
"Open3D.lib",
"glfw3.lib",
"fmt.lib",
"/LIBPATH:D:/PCL/PCL1.11.1/lib",
"pcl_common.lib",
"pcl_features.lib",
"pcl_filters.lib",
"pcl_io.lib",
"pcl_io_ply.lib",
"pcl_kdtree.lib",
"pcl_keypoints.lib",
"pcl_ml.lib",
"pcl_octree.lib",
"pcl_outofcore.lib",
"pcl_people.lib",
"pcl_recognition.lib",
"pcl_registration.lib",
"pcl_sample_consensus.lib",
"pcl_search.lib",
"pcl_segmentation.lib",
"pcl_stereo.lib",
"pcl_surface.lib",
"pcl_tracking.lib",
"pcl_visualization.lib",
"/LIBPATH:D:/PCL/PCL1.11.1/3rdParty/Boost/lib",
"libboost_atomic-vc142-mt-x64-1_74.lib",
"libboost_bzip2-vc142-mt-x64-1_74.lib",
"libboost_chrono-vc142-mt-x64-1_74.lib",
"libboost_container-vc142-mt-x64-1_74.lib",
"libboost_context-vc142-mt-x64-1_74.lib",
"libboost_contract-vc142-mt-x64-1_74.lib",
"libboost_coroutine-vc142-mt-x64-1_74.lib",
"libboost_date_time-vc142-mt-x64-1_74.lib",
"libboost_exception-vc142-mt-x64-1_74.lib",
"libboost_fiber-vc142-mt-x64-1_74.lib",
"libboost_filesystem-vc142-mt-x64-1_74.lib",
"libboost_graph-vc142-mt-x64-1_74.lib",
"libboost_graph_parallel-vc142-mt-x64-1_74.lib",
"libboost_iostreams-vc142-mt-x64-1_74.lib",
"libboost_locale-vc142-mt-x64-1_74.lib",
"libboost_log-vc142-mt-x64-1_74.lib",
"libboost_log_setup-vc142-mt-x64-1_74.lib",
"libboost_math_c99-vc142-mt-x64-1_74.lib",
"libboost_math_c99f-vc142-mt-x64-1_74.lib",
"libboost_math_c99l-vc142-mt-x64-1_74.lib",
"libboost_math_tr1-vc142-mt-x64-1_74.lib",
"libboost_math_tr1f-vc142-mt-x64-1_74.lib",
"libboost_math_tr1l-vc142-mt-x64-1_74.lib",
"libboost_mpi-vc142-mt-x64-1_74.lib",
"libboost_nowide-vc142-mt-x64-1_74.lib",
"libboost_numpy38-vc142-mt-x64-1_74.lib",
"libboost_prg_exec_monitor-vc142-mt-x64-1_74.lib",
"libboost_program_options-vc142-mt-x64-1_74.lib",
"libboost_python38-vc142-mt-x64-1_74.lib",
"libboost_random-vc142-mt-x64-1_74.lib",
"libboost_regex-vc142-mt-x64-1_74.lib",
"libboost_serialization-vc142-mt-x64-1_74.lib",
"libboost_stacktrace_noop-vc142-mt-x64-1_74.lib",
"libboost_stacktrace_windbg-vc142-mt-x64-1_74.lib",
"libboost_stacktrace_windbg_cached-vc142-mt-x64-1_74.lib",
"libboost_system-vc142-mt-x64-1_74.lib",
"libboost_test_exec_monitor-vc142-mt-x64-1_74.lib",
"libboost_thread-vc142-mt-x64-1_74.lib",
"libboost_timer-vc142-mt-x64-1_74.lib",
"libboost_type_erasure-vc142-mt-x64-1_74.lib",
"libboost_unit_test_framework-vc142-mt-x64-1_74.lib",
"libboost_wave-vc142-mt-x64-1_74.lib",
"libboost_wserialization-vc142-mt-x64-1_74.lib",
"libboost_zlib-vc142-mt-x64-1_74.lib",
"/LIBPATH:D:/PCL/PCL1.11.1/3rdParty/FLANN/lib",
"flann.lib",
"flann_cpp.lib",
"flann_cpp_s.lib",
"flann_s.lib",
"/LIBPATH:D:/PCL/PCL1.11.1/3rdParty/OpenNI2/Lib",
"OpenNI2.lib",
"/LIBPATH:D:/PCL/PCL1.11.1/3rdParty/Qhull/lib",
"qhull.lib",
"qhullcpp.lib",
"qhullstatic.lib",
"qhullstatic_r.lib",
"qhull_p.lib",
"qhull_r.lib",
"/LIBPATH:D:/PCL/PCL1.11.1/3rdParty/VTK/lib",
"QVTKWidgetPlugin.lib",
"vtkChartsCore-8.2.lib",
"vtkCommonColor-8.2.lib",
"vtkCommonComputationalGeometry-8.2.lib",
"vtkCommonCore-8.2.lib",
"vtkCommonDataModel-8.2.lib",
"vtkCommonExecutionModel-8.2.lib",
"vtkCommonMath-8.2.lib",
"vtkCommonMisc-8.2.lib",
"vtkCommonSystem-8.2.lib",
"vtkCommonTransforms-8.2.lib",
"vtkDICOMParser-8.2.lib",
"vtkDomainsChemistry-8.2.lib",
"vtkDomainsChemistryOpenGL2-8.2.lib",
"vtkdoubleconversion-8.2.lib",
"vtkexodusII-8.2.lib",
"vtkexpat-8.2.lib",
"vtkFiltersAMR-8.2.lib",
"vtkFiltersCore-8.2.lib",
"vtkFiltersExtraction-8.2.lib",
"vtkFiltersFlowPaths-8.2.lib",
"vtkFiltersGeneral-8.2.lib",
"vtkFiltersGeneric-8.2.lib",
"vtkFiltersGeometry-8.2.lib",
"vtkFiltersHybrid-8.2.lib",
"vtkFiltersHyperTree-8.2.lib",
"vtkFiltersImaging-8.2.lib",
"vtkFiltersModeling-8.2.lib",
"vtkFiltersParallel-8.2.lib",
"vtkFiltersParallelImaging-8.2.lib",
"vtkFiltersPoints-8.2.lib",
"vtkFiltersProgrammable-8.2.lib",
"vtkFiltersSelection-8.2.lib",
"vtkFiltersSMP-8.2.lib",
"vtkFiltersSources-8.2.lib",
"vtkFiltersStatistics-8.2.lib",
"vtkFiltersTexture-8.2.lib",
"vtkFiltersTopology-8.2.lib",
"vtkFiltersVerdict-8.2.lib",
"vtkfreetype-8.2.lib",
"vtkGeovisCore-8.2.lib",
"vtkgl2ps-8.2.lib",
"vtkglew-8.2.lib",
"vtkGUISupportQt-8.2.lib",
"vtkGUISupportQtOpenGL-8.2.lib",
"vtkGUISupportQtSQL-8.2.lib",
"vtkhdf5-8.2.lib",
"vtkhdf5_hl-8.2.lib",
"vtkImagingColor-8.2.lib",
"vtkImagingCore-8.2.lib",
"vtkImagingFourier-8.2.lib",
"vtkImagingGeneral-8.2.lib",
"vtkImagingHybrid-8.2.lib",
"vtkImagingMath-8.2.lib",
"vtkImagingMorphological-8.2.lib",
"vtkImagingSources-8.2.lib",
"vtkImagingStatistics-8.2.lib",
"vtkImagingStencil-8.2.lib",
"vtkInfovisCore-8.2.lib",
"vtkInfovisLayout-8.2.lib",
"vtkInteractionImage-8.2.lib",
"vtkInteractionStyle-8.2.lib",
"vtkInteractionWidgets-8.2.lib",
"vtkIOAMR-8.2.lib",
"vtkIOAsynchronous-8.2.lib",
"vtkIOCityGML-8.2.lib",
"vtkIOCore-8.2.lib",
"vtkIOEnSight-8.2.lib",
"vtkIOExodus-8.2.lib",
"vtkIOExport-8.2.lib",
"vtkIOExportOpenGL2-8.2.lib",
"vtkIOExportPDF-8.2.lib",
"vtkIOGeometry-8.2.lib",
"vtkIOImage-8.2.lib",
"vtkIOImport-8.2.lib",
"vtkIOInfovis-8.2.lib",
"vtkIOLegacy-8.2.lib",
"vtkIOLSDyna-8.2.lib",
"vtkIOMINC-8.2.lib",
"vtkIOMovie-8.2.lib",
"vtkIONetCDF-8.2.lib",
"vtkIOParallel-8.2.lib",
"vtkIOParallelXML-8.2.lib",
"vtkIOPLY-8.2.lib",
"vtkIOSegY-8.2.lib",
"vtkIOSQL-8.2.lib",
"vtkIOTecplotTable-8.2.lib",
"vtkIOVeraOut-8.2.lib",
"vtkIOVideo-8.2.lib",
"vtkIOXML-8.2.lib",
"vtkIOXMLParser-8.2.lib",
"vtkjpeg-8.2.lib",
"vtkjsoncpp-8.2.lib",
"vtklibharu-8.2.lib",
"vtklibxml2-8.2.lib",
"vtklz4-8.2.lib",
"vtklzma-8.2.lib",
"vtkmetaio-8.2.lib",
"vtkNetCDF-8.2.lib",
"vtkogg-8.2.lib",
"vtkParallelCore-8.2.lib",
"vtkpng-8.2.lib",
"vtkproj-8.2.lib",
"vtkpugixml-8.2.lib",
"vtkRenderingAnnotation-8.2.lib",
"vtkRenderingContext2D-8.2.lib",
"vtkRenderingContextOpenGL2-8.2.lib",
"vtkRenderingCore-8.2.lib",
"vtkRenderingFreeType-8.2.lib",
"vtkRenderingGL2PSOpenGL2-8.2.lib",
"vtkRenderingImage-8.2.lib",
"vtkRenderingLabel-8.2.lib",
"vtkRenderingLOD-8.2.lib",
"vtkRenderingOpenGL2-8.2.lib",
"vtkRenderingQt-8.2.lib",
"vtkRenderingVolume-8.2.lib",
"vtkRenderingVolumeOpenGL2-8.2.lib",
"vtksqlite-8.2.lib",
"vtksys-8.2.lib",
"vtktheora-8.2.lib",
"vtktiff-8.2.lib",
"vtkverdict-8.2.lib",
"vtkViewsContext2D-8.2.lib",
"vtkViewsCore-8.2.lib",
"vtkViewsInfovis-8.2.lib",
"vtkViewsQt-8.2.lib",
"vtkzlib-8.2.lib"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$msCompile"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: cl.exe"
}
]
}
添加配置
生成launch.json
文件
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) 启动",
"type": "cppvsdbg",
"request": "launch",
"program": "输入程序名称,例如 ${workspaceFolder}/a.exe",
"args": [],
"stopAtEntry": true,
"cwd": "${fileDirname}",
"environment": [],
"console": "externalTerminal"
}
]
}
三、测试代码
选择test.cpp界面。快捷键ctrl +shift +B,点击生成,终端生成完成即可。
点击运行,分别显示open3d 与pcl环境下的点云显示。后续就可以进行二次开发了。
四、注意事项及后续
open3d 的fmt opengl相关的库需要自己先编译一下,git上不带。cmake配置应该更简单一点,但是我对cmake不太熟悉,后续在更新吧。
学习pcl open3d相关开发,关注专栏: 基于PCL、Open3d、Easy3d 、VTK等常见开源库的QT开发