Win10 系统下VisualStudio2019 配置点云库 PCL1.11.0的图文教程

下面是详细的攻略。首先,我们需要准备以下工具:

  • Visual Studio 2019
  • CMake
  • Boost库
  • FLANN库
  • VTK库

具体操作步骤如下:

  1. 下载并安装PCL库

首先,需要从PCL官网(https://pointclouds.org/downloads/)下载PCL 1.11.0版。

安装PCL库时,我们需要选择合适的编译器类型。由于我们使用的是Visual Studio 2019,而PCL 1.11.0版只支持MSVC 19.x系列,因此我们需要下载使用MSVC 19.x系列编译器的PCL版本。

  1. 配置Boost库

打开Boost官网(https://www.boost.org/users/download/)下载最新的Boost库,解压至某一目录,打开命令行,进入Boost目录,执行以下命令:

bootstrap.bat
.\b2.exe --build-dir=<vcxproj_dir> --build-type=complete stage

其中,vcxproj_dir为要生成的库文件目录。Boost库编译完成后,将<vcxproj_dir>stage\lib子目录中的所有.lib文件拷贝至一个目录供后续使用。

  1. 配置FLANN库

从官网(https://github.com/flann-dev/flann)下载FLANN库,并执行以下命令:

cmake -G "Visual Studio 16 2019" -DCMAKE_INSTALL_PREFIX=<install_dir> -DBUILD_MATLAB_BINDINGS=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBoost_DIR=<boost_dir> .
cmake --build . --config Release --target INSTALL

其中,install_dir为库要安装到的目录,boost_dir为Boost库的目录。安装完成后,将<install_dir>\lib中的所有.lib文件拷贝至之前生成的目录。

  1. 配置VTK库

从官网(https://vtk.org/download/)下载VTK库的最新版本,解压并进入目录。执行以下命令:

mkdir build
cd build
cmake -G "Visual Studio 16 2019" ..
cmake --build . --config Release

在VTK库编译完成后,将<VTK-root>\lib\Release中的所有.lib文件拷贝至之前生成的目录。

  1. 配置CMake

配置CMake时,我们需要将目录设置为PCL库的根目录,为build目录生成Visual Studio项目文件,然后设置Boost_INCLUDE_DIRBoost_LIBRARY_DIRSFLANN_INCLUDE_DIRSFLANN_LIBRARY_DIRSVTK_DIR等路径变量,并执行CMake

在命令行中,我们需要依次执行以下命令:

mkdir build
cd build
cmake -G "Visual Studio 16 2019" .. -DCMAKE_BUILD_TYPE=Release -DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON -DBoost_INCLUDE_DIR=<boost_dir>\boost_1_75_0 -DBoost_LIBRARY_DIRS=<boost_dir>\vc16_x64_lib -DFLANN_INCLUDE_DIRS=<flann_dir>\include -DFLANN_LIBRARY_DIRS=<flann_dir>\lib -DVTK_DIR=<vtk_dir>

其中,boost_dirflann_dirvtk_dir为Boost、FLANN和VTK库的目录。

  1. 编译和运行示例代码

执行以下命令:

cmake --build . --config Release

编译完成后,在bin目录中,可以找到编译的PCLVisualizer示例。我们运行该示例并加载点云数据,可以看到PCL库已经成功配置和使用。

另外一个示例代码可以是不依赖PCL的任何库,直接依赖点云存储格式如PLY、PCD的代码读取示例。读取示例代码可以使用官方提供的示例,也可以根据自己的需求编写。以下为使用PCL库加载PLY文件的示例代码:

#include <iostream>
#include <pcl/io/ply_io.h>

int main(int argc, char** argv) {

    pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);
    pcl::io::loadPLYFile("example.ply", *cloud);

    std::cout << "Loaded " << cloud->width << "x" << cloud->height << " data points." << std::endl;

    return 0;
}

在编译该示例代码时,需要链接PCL库,指定include目录和生成的.lib文件路径,然后进行编译。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Win10 系统下VisualStudio2019 配置点云库 PCL1.11.0的图文教程 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 微软宣布.NET开源:Visual Studio支持Android了

    微软宣布.NET开源:Visual Studio支持Android了 简介 微软宣布.NET Framework将全面开源,并将.NET Core开源为Linux、Mac OS X和Windows的x86平台。Visual Studio 2015也增加了对Android和iOS的支持。这些举措将加强微软在移动领域的布局,推动.NET技术的普及。 .NET开源…

    C# 2023年6月3日
    00
  • C#使用Dictionary拆分字符串与记录log方法

    一、概述 在C#编程过程中,使用Dictionary结构可以方便地将字符串拆分成基本单元,并快速处理。同时记录程序运行过程的log也是开发中非常重要的一项功能。本文将主要介绍如何使用Dictionary拆分字符串,并通过记录log方法实现字符串处理的详细攻略。 二、拆分字符串 在C#中,使用Split方法可以将字符串按照指定的分割符拆分成多个子字符串,同时也…

    C# 2023年5月31日
    00
  • .Net整合Json实现REST服务客户端的方法详解

    .Net整合Json实现REST服务客户端 什么是REST服务? REST(Representational State Transfer)是目前最流行的一种网络应用程序的设计风格和开发方式,是一种轻量级的Web服务解决方案。它采用REST架构,通过HTTP协议实现,既可以返回XML或JSON格式的数据。 相较于SOAP,REST服务具有轻量级、易于缓存、可…

    C# 2023年5月31日
    00
  • ASP.NET MVC使用Identity增删改查用户

    以下是“ASP.NET MVC使用Identity增删改查用户”的完整攻略: 什么是ASP.NET Identity ASP.NET Identity是一个框架,用于管理用户、角和权限。它是ASP.NET MVC一部分,可以轻松地将身份验证和授权添加到应用程序中。 ASP.NET MVC使用Identity增删改查用户的过程 以下是ASP.NET MVC使用…

    C# 2023年5月12日
    00
  • C#中的lock、Monitor、Mutex学习笔记

    C#中的Lock、Monitor、Mutex学习笔记 前言 在多线程并发编程中,由于多线程同时执行,并且对共享资源进行访问时需要考虑线程安全,保证线程的执行顺序或者互斥访问,C#提供了三种方式来处理线程同步问题:Lock、Monitor、Mutex。 在本篇学习笔记中,我们将对这三种方式进行全面的讲解。 Lock Lock是一种轻量级的同步方式,它是由.NE…

    C# 2023年6月1日
    00
  • Netcore Webapi返回数据的三种方式示例

    .Net Core WebAPI返回数据的三种方式示例 在.Net Core WebAPI中,有多种方式可以返回数据给客户端。本攻略将详细介绍.Net Core WebAPI返回数据的三种方式,并提供两个示例说明。 1. 返回字符串 在.Net Core WebAPI中,可以使用字符串来返回数据给客户端。可以按照以下步骤操作: 在Controller类中,添…

    C# 2023年5月16日
    00
  • C#事件管理器如何清空所有监听详解

    C#事件管理器可以管理某一个事件的全部监听器,通过事件管理器,我们可以实现对事件监听器的添加、删除、清空等操作。本文介绍如何清空事件管理器中某个事件的全部监听器。 1. 获取事件对象 在清空事件监听器之前,我们需要首先获取对应的事件对象。事件对象是使用 event 关键字定义的。我们可以通过该对象来管理事件的监听器。 比如,我们有一个事件 MyEvent: …

    C# 2023年6月3日
    00
  • 快速了解c# 结构体

    下面是快速了解C#结构体的完整攻略: 简介 在C#中,结构体是一种轻量级的数据结构,可以用来封装少量相关数据。相比于类(class),结构体的运行效率更高,且占用更少的内存空间。通过使用结构体,可以提高程序的性能和效率。 定义结构体 定义结构体的方式与定义类的方式类似,不同之处在于使用“struct”关键字。例如: struct Point { public…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部