首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

PCL从理解到应用【02】PCL环境安装 | PCL测试| Linux系统

  • 25-02-18 21:00
  • 2843
  • 7352
blog.csdn.net

前言

本文介绍在Ubuntu18.04系统中,如何安装PCL。

源码安装方式:pcl版本1.91,vtk版本8.2.0,Ubuntu版本18.04。

安装好后,可以看到pcl的库,在/usr/lib/中;

通过编写C++代码,直接调用的pcl库

#include

#include

#include

#include

...............

然后使用Cmake编译,生成可执行程序,可视化效果: 

一、安装pcl所需依赖

编写一个sh脚本,包含安装pcl依赖的命令,名称为:install_dependencies.sh

  1. #!/bin/bash
  2. sudo apt-get update # 更新包列表
  3. sudo apt-get install -y git build-essential linux-libc-dev # 安装基础构建工具和库
  4. sudo apt-get install -y cmake cmake-gui # 安装 cmake 和 cmake-gui
  5. sudo apt-get install -y libusb-1.0-0-dev libusb-dev libudev-dev # 安装 libusb 相关库
  6. sudo apt-get install -y mpi-default-dev openmpi-bin openmpi-common # 安装 MPI 相关库
  7. sudo apt-get install -y libflann1.9 libflann-dev # 安装 FLANN 库
  8. sudo apt-get install -y libeigen3-dev # 安装 Eigen 库
  9. sudo apt-get install -y libboost-all-dev # 安装 Boost 库
  10. sudo apt-get install -y libvtk7.1-qt libvtk7.1 libvtk7-qt-dev # 安装 VTK 库
  11. sudo apt-get install -y libqhull* libgtest-dev # 安装 QHull 和 GTest 库
  12. sudo apt-get install -y freeglut3-dev pkg-config libxmu-dev libxi-dev # 安装 FreeGLUT 和其他依赖库
  13. sudo apt-get install -y mono-complete openjdk-8-jdk openjdk-8-jre # 安装 Mono 和 OpenJDK

然后在终端中运行以下命令来执行脚本:

  1. chmod +x install_dependencies.sh
  2. ./install_dependencies.sh

需要确保没有遗漏,安装成功

二、源码安装vtk

VTK(Visualization Toolkit)是一个开源的软件系统,用于3D计算机图形、图像处理和可视化。

它由Kitware公司开发和维护,并且是众多可视化和数据处理应用程序的基础。功能包括:

  • 3D图形渲染:VTK支持3D图形渲染,可以生成高质量的3D图像和动画。
  • 数据处理:VTK提供了丰富的数据处理功能,包括数据过滤、转换、采样等。
  • 图像处理:VTK可以处理2D和3D图像,提供了图像过滤、分割、变换等功能。
  • 科学计算:VTK包含多种科学计算工具,可以用于科学数据的分析和可视化。

先安装cmake 和vtk 的依赖项

  1. sudo apt-get install cmake-curses-gui
  2. sudo apt-get install freeglut3-dev
  3. sudo apt-get install libqt5x11extras5 libqt5x11extras5-dev

然后下载VTK-8.2.0库,VTK官网地址:https://vtk.org/download/

 需要下来网页,找到8.2.0版本,下载VTK-8.2.0. zip或VTK-8.2.0.tar. gz

进入压缩包的下载目录,解压文件,然后进入文件夹所在位置的命令终端

比如:把压缩包放到了software目录,然后解压

注意:需要退出Conda环境!!!需要退出Conda环境!!!需要退出Conda环境!!!

创建build文件夹,然后cd到build中, 使用可视化的cmake进行工程分析

  1. mkdir build
  2. cd build
  3. cmake-gui

看到如下界面,当然会有差异(没有红色部分内容,因为之前编译过了,才会出现的)

  • 点击Browse Source,选择source code的路径
  • 勾选Grouped和Advanced
  • 点击底下的Configure按钮,等待执行完成,出现红色部分的内容

展开 Module ,勾选 Module_vtkGUISupportQt

展开VTK,勾选 VTK_Group_Qt

 接着点击Configure按钮,等待完成后,再点击Generate按钮

这一步完成了cmake分析,如果没什么问题,如上图所示

编译安装VTK-8.2.0

关闭cmake-gui界面,然后输入sudo make进行编译,编译时间会较长;

如何电脑CPU性能较好,支持多线程,可以使用多线程加速编译

sudo make -j2

可以使用 -j 选项来指定线程数,其中 2 表示使用 2 个线程进行并行编译。

根据电脑性能的 CPU 核心数量调整这个数字,比如sudo make -j4

安装VTK-8.2.0

最后输入sudo make install进行安装,完成VTK的安装啦~

sudo make install

三、源码安装pcl

来到pcl开源地址,下载源码压缩包Source code 

https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.9.1

解压下载的压缩包,然后打开终端,进入解压的目录,输入下面命令:

  1. cd pcl-pcl-1.9.1
  2. mkdir release
  3. cd release

然后复制下面命令回车,用cmake分析整个源代码

cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \ -DBUILD_GPU=ON-DBUILD_apps=ON -DBUILD_examples=ON \ -DCMAKE_INSTALL_PREFIX=/usr ..

构建完成后,接着输入sudo make进行编译,时间比较长

最后输入sudo make install 进行安装,完成pcl安装啦~

sudo make install

四、测试pcl

创建一个test_pcl文件夹,然后创建一个源文件test_pcl.cpp,代码如下:

  1. #include
  2. #include
  3. #include
  4. #include
  5. int main(int argc, char** argv) {
  6. // 创建点云对象
  7. pcl::PointCloud::Ptr cloud(new pcl::PointCloud);
  8. // 定义立方体的边长和点的数量
  9. float edge_length = 1.0;
  10. int num_points_per_axis = 10; // 每个轴上的点数
  11. int total_points = num_points_per_axis * num_points_per_axis * num_points_per_axis;
  12. // 生成均匀分布的立方体点云
  13. for (int i = 0; i < num_points_per_axis; ++i) {
  14. for (int j = 0; j < num_points_per_axis; ++j) {
  15. for (int k = 0; k < num_points_per_axis; ++k) {
  16. pcl::PointXYZRGB point;
  17. point.x = static_cast<float>(i) / (num_points_per_axis - 1) * edge_length;
  18. point.y = static_cast<float>(j) / (num_points_per_axis - 1) * edge_length;
  19. point.z = static_cast<float>(k) / (num_points_per_axis - 1) * edge_length;
  20. // 根据z坐标设置颜色渐变,使渐变更加明显
  21. uint8_t r = static_cast<uint8_t>(255 * point.z / edge_length);
  22. uint8_t g = static_cast<uint8_t>(255 * (1 - point.z / edge_length));
  23. uint8_t b = static_cast<uint8_t>(255 * std::abs(0.5 - point.z / edge_length) * 2); // 增加蓝色成分以增强渐变
  24. uint32_t rgb = (static_cast<uint32_t>(r) << 16 |
  25. static_cast<uint32_t>(g) << 8 |
  26. static_cast<uint32_t>(b));
  27. point.rgb = *reinterpret_cast<float*>(&rgb);
  28. cloud->points.push_back(point);
  29. }
  30. }
  31. }
  32. cloud->width = static_cast<uint32_t>(cloud->points.size());
  33. cloud->height = 1;
  34. cloud->is_dense = true;
  35. // 保存点云到PCD文件
  36. pcl::io::savePCDFileASCII("cube_point_cloud.pcd", *cloud);
  37. std::cout << "Saved " << cloud->points.size() << " data points to cube_point_cloud.pcd." << std::endl;
  38. // 可视化点云
  39. pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
  40. viewer->setBackgroundColor(0, 0, 0);
  41. pcl::visualization::PointCloudColorHandlerRGBField rgb(cloud);
  42. viewer->addPointCloud(cloud, rgb, "sample cloud");
  43. viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud");
  44. viewer->addCoordinateSystem(1.0);
  45. viewer->initCameraParameters();
  46. // 显示点云直到窗口关闭
  47. while (!viewer->wasStopped()) {
  48. viewer->spinOnce(100);
  49. }
  50. return 0;
  51. }

在test_pcl文件夹下再创建一个配置文件CMakeLists.txt,代码如下:

cmake_minimum_required(VERSION 2.6)

project(test_pcl)

find_package(PCL 1.9.1 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})

link_directories(${PCL_LIBRARY_DIRS})

add_definitions(${PCL_DEFINITIONS})

add_executable(test_pcl test_pcl.cpp)

target_link_libraries (test_pcl ${PCL_LIBRARIES})

install(TARGETS test_pcl RUNTIME DESTINATION bin)

在项目目录中运行以下命令以编译并运行程序:

mkdir build
cd build
cmake ..
make
./test_pcl 

示例效果:

通过滑动鼠标,缩放大小:

恭喜完成安装啦~

报错与解决方案

如果遇到报错,显示刚才安装的vtk8.2库没有找到

./test_pcl: error while loading shared libraries: libvtkRenderingCore-8.2.so.1: cannot open shared object file: No such file or directory ls /usr/local/lib/libvtkRenderingCore-8.2.so.1 /usr/local/lib/libvtkRenderingCore-8.2.so.1

需要添加库的环境遍历,执行命令:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

再并运行程序 ./test_pcl

注:本文转载自blog.csdn.net的一颗小树x的文章"https://blog.csdn.net/qq_41204464/article/details/140169030"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top