ubuntu安装指定版本PCL与CMakeLists.txt

        PCL(Point Cloud Library)是一个开源的库,用于处理点云数据的获取、处理、滤波、特征提取、配准、分割等一系列操作。它提供了丰富的算法和工具,可用于处理三维点云数据,是许多计算机视觉和机器人领域常用的工具之一。

1 PCL主要特点

        以下是 PCL 库的一些主要特点和功能:

        点云数据结构支持:PCL 提供了各种类型的点云数据结构,包括 XYZ 点、RGB 点、法向量等,方便用户存储和处理不同类型的点云数据。

        点云处理算法:PCL 包含了各种点云处理算法,如滤波、特征提取、配准、分割等,可以帮助用户对点云数据进行各种操作和分析。

        多种输入输出格式支持:PCL 支持多种常见的点云数据格式,包括 PCD、PLY、PCAP 等,方便用户导入和导出点云数据。

        与其他库的集成:PCL 可以与其他常用的库(如 OpenCV、Boost 等)结合使用,扩展了其在计算机视觉和机器人领域的应用范围。

        跨平台性:PCL 支持 Windows、Linux 和 macOS 等多个平台,使其更易于在不同环境下使用和部署。

        总的来说,PCL 是一个功能强大且广泛应用于三维点云数据处理领域的开源库,为研究人员和开发者提供了丰富的工具和算法来处理和分析点云数据。

2 指定版本编译安装

       2.1 依赖环境

sudo apt-get update
sudo apt-get install -y libboost-all-dev libeigen3-dev libflann-dev libvtk7-dev libqhull-dev

        2.2 pcl-1.8.1下载

        PCL库源码工程地址为GitHub - PointCloudLibrary/pcl: Point Cloud Library (PCL)https://github.com/PointCloudLibrary/pcl),历史版本地址为Releases · PointCloudLibrary/pcl · GitHubhttps://github.com/PointCloudLibrary/pcl/releases/)。

        下面pcl-1.8.1版本安装为例,源码下载地址为Release pcl-1.8.1 · PointCloudLibrary/pcl · GitHubhttps://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.8.1)。滚动到页面底部下载Source code,zip和tar.gz格式均可,这里下载zip格式。

        wget方式下载命令为:

wget https://github.com/PointCloudLibrary/pcl/archive/refs/tags/pcl-1.8.1.zip

        2.3 编译安装

unzip pcl-1.8.1.zip
cd pcl-pcl-1.8.1/
mkdir build && cd build
cmake .. (或者)cmake -DCMAKE_BUILD_TYPE=Release ..
make -j2
sudo make install

        如果后续测试发现点云裁剪函数CropBox返回值不正确或者为空,这个问题不一定会出现,可能跟版本和系统环境有关,那么需要重新编译,需要在cmake中增加如下参数。

rm -r build
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DPCL_ENABLE_SSE:BOOL=FALSE ..
make -j2
sudo make install

3 CMakeLists.txt

      3.1 示例内容

        CMakeLists.txt的示例内容如下所示。

cmake_minimum_required(VERSION 3.20)
project(hello_world)


find_package(Boost REQUIRED COMPONENTS system)

# find_package(PCL 1.8 REQUIRED)
set(PCL_DIR "/usr/local/include/pcl-1.8")
set(PCL_LIBRARIES "/usr/local/lib")
message("PCL_DIR: " ${PCL_DIR})
message("PCL_LIBRARIES: " ${PCL_LIBRARIES})

include_directories(
    ${Boost_INCLUDE_DIRS}
    ${CMAKE_CURRENT_SOURCE_DIR}/include
    /usr/local/include
    /usr/include/
    /usr/include/eigen3
    /usr/local/include/pcl-1.8
)
 

set(CMAKE_BUILD_TYPE "Debug") # 默认是Release模式,设置为Debug才能调试
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) # 设置可执行文件的输出目录


add_executable(hello_world test_pcl.cpp)
file(GLOB PCL_LIB_FILES ${PCL_LIBRARIES}/libpcl*)
target_link_libraries(${PROJECT_NAME} PRIVATE ${PCL_LIB_FILES})

        3.2 注意事项

        (1)使用find_package(PCL 1.8 REQUIRED)可能会找到其它依赖,比如anaconda中的依赖,可以用示例内容中的message来查看查询结果。当这种情况出现时,可以按照上述示例内容通过SET来指定路径。

        (2)需要将boost包含进来,即find_package(Boost REQUIRED COMPONENTS system)、

include_directories(${Boost_INCLUDE_DIRS})。否则会报如下错误"undefined reference to `boost::system::generic_category()",即找不到boost相关内容。

4 示例程序

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>

int main()
{
    // 创建一个PointCloud对象
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

    // 从文件中读取点云数据
    if (pcl::io::loadPCDFile<pcl::PointXYZ>("xxx.pcd", *cloud) == -1)
    {
        PCL_ERROR("Couldn't read file.\n");
        return -1;
    }

    // 输出前10个点的信息
    std::cout << "Loaded "
              << cloud->width * cloud->height
              << " data points from your_point_cloud.pcd with the following fields: "
              << std::endl;

    int count = 0;
    for (const auto& point : *cloud)
    {
        if (count < 10)
        {
            std::cout << "x: " << point.x
                      << ", y: " << point.y
                      << ", z: " << point.z
                      << std::endl;
            count++;
        }
        else
        {
            break; // 输出了前10个点后退出循环
        }
    }

    return 0;
}

【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。  

更多python与C++技巧、三维算法、深度学习算法总结、大模型请关注我的博客,欢迎讨论与交流:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。

  • 30
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据引用\[1\]和引用\[2\],在Ubuntu 18.04上安装pcl点云库需要执行以下步骤: 1. 执行以下命令安装libvtk7-dev库: ``` sudo apt-get install libvtk7-dev=7.1.1+dfsg1-2 ``` 2. 在桌面上创建一个名为pcl_test的文件夹,确保文件夹名称与引用\[2\]中的一致。 3. 确保已在Ubuntu上配置了C++环境,即安装了g++和gcc。可以使用以下命令安装: ``` sudo apt install gcc sudo apt install g++ ``` 4. 创建一个CMakeLists.txt文件,内容如下: ``` cmake_minimum_required(VERSION 2.6 FATAL_ERROR) project(pcl_test) find_package(PCL 1.7 REQUIRED) include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS}) add_executable(pcl_test pcl_test.cpp) target_link_libraries(pcl_test ${PCL_LIBRARIES}) ``` 请注意,以上步骤是基于引用\[1\]和引用\[2\]提供的信息。 #### 引用[.reference_title] - *1* [ubuntu18.04安装pcl库](https://blog.csdn.net/m0_46371350/article/details/129801273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ubuntu18.04安装PCL点云库踩坑指南](https://blog.csdn.net/TLHones/article/details/124788975)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Ubuntu20.04 Ubuntu18.04安装pcl点云库](https://blog.csdn.net/weixin_53660567/article/details/119871890)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding的叶子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值