当前位置: 首页 > article >正文

win10 c++ VsCode 配置PCL open3d并显示

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文件夹,我创建在桌面。
在这里插入图片描述

打开文件夹,并新建文件
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fa19778df9284d079d5a5267bc61576b.png
先进入文件夹,后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,设置如下:
在这里插入图片描述
我在这地方设置了pclopen3d 的路径

{
    "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开发


http://www.kler.cn/a/594118.html

相关文章:

  • 源代码防泄密和安全上外网的关联
  • 第一个Spring程序基于Spring6
  • 使用C#创建安装Windows服务程序
  • 蓝桥杯十天冲刺-day1(日期问题)
  • 软考笔记——程序设计语言基础知识
  • Git 回退操作详解:带示例的“小白”指南
  • 编译构建google R8源码
  • 谈谈最近AI在我工作生活中的深度应用
  • JVM常用概念之对象对齐
  • Linux目录操作学习总结
  • squirrel语言全面介绍
  • LeetCode[242]有效的字母异位词
  • SpringBoot 第二课(Ⅰ) 整合springmvc(详解)
  • NO.51十六届蓝桥杯备战|堆算法题|第k小|除2|最小函数值|序列合并|舞蹈课(C++)
  • K8S学习之基础四十:K8S配置altermanager发送告警到钉钉群
  • SpringCache @Cacheable 在同一个类中调用方法,导致缓存不生效的问题及解决办法
  • Springboot项目搭建(9)-分页与文件上传
  • 论文阅读——高光谱与多光谱图像融合:通过自监督表示实现任意分辨率
  • 用爬虫解锁 Shopee 店铺商品数据,开启电商新洞察
  • Thinkphp指纹识别