PCL從理解到應用【02】PCL環境安裝 | PCL測試| Linux系統

前言

本文介紹在Ubuntu18.04系統中,如何安裝PCL。

源碼安裝方式:pcl版本1.91,vtk版本8.2.0,Ubuntu版本18.04。

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

通過編寫C++代碼,直接調用的pcl庫

#include <iostream>

#include <pcl/point_types.h>

#include <pcl/io/pcd_io.h>

#include <pcl/visualization/pcl_visualizer.h>

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

然后使用Cmake編譯,生成可執行程序,可視化效果:?

一、安裝pcl所需依賴

編寫一個sh腳本,包含安裝pcl依賴的命令,名稱為:install_dependencies.sh

#!/bin/bash
sudo apt-get update # 更新包列表
sudo apt-get install -y git build-essential linux-libc-dev # 安裝基礎構建工具和庫
sudo apt-get install -y cmake cmake-gui # 安裝 cmake 和 cmake-gui
sudo apt-get install -y libusb-1.0-0-dev libusb-dev libudev-dev # 安裝 libusb 相關庫
sudo apt-get install -y mpi-default-dev openmpi-bin openmpi-common # 安裝 MPI 相關庫
sudo apt-get install -y libflann1.9 libflann-dev # 安裝 FLANN 庫
sudo apt-get install -y libeigen3-dev # 安裝 Eigen 庫
sudo apt-get install -y libboost-all-dev # 安裝 Boost 庫
sudo apt-get install -y libvtk7.1-qt libvtk7.1 libvtk7-qt-dev # 安裝 VTK 庫
sudo apt-get install -y libqhull* libgtest-dev # 安裝 QHull 和 GTest 庫
sudo apt-get install -y freeglut3-dev pkg-config libxmu-dev libxi-dev # 安裝 FreeGLUT 和其他依賴庫
sudo apt-get install -y mono-complete openjdk-8-jdk openjdk-8-jre # 安裝 Mono 和 OpenJDK

然后在終端中運行以下命令來執行腳本:

chmod +x install_dependencies.sh
./install_dependencies.sh

需要確保沒有遺漏,安裝成功

二、源碼安裝vtk

VTK(Visualization Toolkit)是一個開源的軟件系統,用于3D計算機圖形、圖像處理和可視化。

它由Kitware公司開發和維護,并且是眾多可視化和數據處理應用程序的基礎。功能包括:

  • 3D圖形渲染:VTK支持3D圖形渲染,可以生成高質量的3D圖像和動畫。
  • 數據處理:VTK提供了豐富的數據處理功能,包括數據過濾、轉換、采樣等。
  • 圖像處理:VTK可以處理2D和3D圖像,提供了圖像過濾、分割、變換等功能。
  • 科學計算:VTK包含多種科學計算工具,可以用于科學數據的分析和可視化。

先安裝cmake 和vtk 的依賴項

sudo apt-get install cmake-curses-gui
sudo apt-get install freeglut3-dev
sudo apt-get install libqt5x11extras5 libqt5x11extras5-dev

然后下載VTK-8.2.0庫,VTK官網地址:https://vtk.org/download/

?需要下來網頁,找到8.2.0版本,下載VTK-8.2.0. zipVTK-8.2.0.tar. gz

進入壓縮包的下載目錄,解壓文件,然后進入文件夾所在位置的命令終端

比如:把壓縮包放到了software目錄,然后解壓

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

創建build文件夾,然后cd到build中, 使用可視化的cmake進行工程分析

mkdir build
cd  build
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

解壓下載的壓縮包,然后打開終端,進入解壓的目錄,輸入下面命令:

cd pcl-pcl-1.9.1
mkdir release
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,代碼如下:

#include <iostream>
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>int main(int argc, char** argv) {// 創建點云對象pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);// 定義立方體的邊長和點的數量float edge_length = 1.0;int num_points_per_axis = 10; // 每個軸上的點數int total_points = num_points_per_axis * num_points_per_axis * num_points_per_axis;// 生成均勻分布的立方體點云for (int i = 0; i < num_points_per_axis; ++i) {for (int j = 0; j < num_points_per_axis; ++j) {for (int k = 0; k < num_points_per_axis; ++k) {pcl::PointXYZRGB point;point.x = static_cast<float>(i) / (num_points_per_axis - 1) * edge_length;point.y = static_cast<float>(j) / (num_points_per_axis - 1) * edge_length;point.z = static_cast<float>(k) / (num_points_per_axis - 1) * edge_length;// 根據z坐標設置顏色漸變,使漸變更加明顯uint8_t r = static_cast<uint8_t>(255 * point.z / edge_length);uint8_t g = static_cast<uint8_t>(255 * (1 - point.z / edge_length));uint8_t b = static_cast<uint8_t>(255 * std::abs(0.5 - point.z / edge_length) * 2); // 增加藍色成分以增強漸變uint32_t rgb = (static_cast<uint32_t>(r) << 16 |static_cast<uint32_t>(g) << 8 |static_cast<uint32_t>(b));point.rgb = *reinterpret_cast<float*>(&rgb);cloud->points.push_back(point);}}}cloud->width = static_cast<uint32_t>(cloud->points.size());cloud->height = 1;cloud->is_dense = true;// 保存點云到PCD文件pcl::io::savePCDFileASCII("cube_point_cloud.pcd", *cloud);std::cout << "Saved " << cloud->points.size() << " data points to cube_point_cloud.pcd." << std::endl;// 可視化點云pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));viewer->setBackgroundColor(0, 0, 0);pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgb(cloud);viewer->addPointCloud<pcl::PointXYZRGB>(cloud, rgb, "sample cloud");viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud");viewer->addCoordinateSystem(1.0);viewer->initCameraParameters();// 顯示點云直到窗口關閉while (!viewer->wasStopped()) {viewer->spinOnce(100);}return 0;
}

在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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40805.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40805.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40805.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為路由器靜態路由配置(eNSP模擬實驗)

實驗目標 如圖下所示&#xff0c;讓PC1ping通PC2 具體操作 配置PC設備ip 先配置PC1的ip、掩碼、網關。PC2也做這樣的配置 配置路由器ip 配置G0/0/0的ip信息 #進入系統 <Huawei>system-view #進入GigabitEthernet0/0/0接口 [Huawei]int G0/0/0 #設置接口的ip和掩碼 […

【UE5.3】筆記7 控制Pawn移動

使用A、D鍵控制角色左右移動 打開我們的BP_Player藍圖類&#xff0c;選擇事件圖表&#xff0c;添加我們的控制事件 右鍵&#xff0c;搜索A keyboard&#xff0c;選擇A,如下圖&#xff0c;D也是 添加扭矩力 首先我們要把我們的player上的模擬物理選項打開&#xff0c;這樣我們…

ChatGPT在Java后端開發中的應用與影響

隨著人工智能技術的發展&#xff0c;尤其是OpenAI推出的聊天機器人模型ChatGPT&#xff0c;其強大的自然語言理解和生成能力正在改變著我們的生活和工作方式。在Java后端開發領域&#xff0c;ChatGPT同樣有著廣泛的應用前景&#xff0c;并且能夠為Java后端開發者帶來諸多好處。…

Caused by: java.io.IOException: Broken pipe

IO異常&#xff1a;管道破裂。 推薦文章&#xff1a;解決java.io.IOException: Broken pipe的報錯

JavaFx基礎知識

1.Stage 舞臺 如此這樣的一個框框&#xff0c;舞臺只是這個框框&#xff0c;并不管里面的內容 public void start(Stage primaryStage) throws Exception {primaryStage.setScene(new Scene(new Group()));primaryStage.getIcons().add(new Image("/icon/img.png"))…

【不銹鋼酸退作業區退火爐用高溫輻射計快速安裝】

項目名稱 不銹鋼酸退作業區退火爐用高溫輻射計快速安裝 改造實施項目簡介項目提出前狀況:不銹鋼生產過程中,各種型號的不銹鋼帶鋼在退火工藝中對帶鋼溫度的準確性要求很高,帶鋼溫度的檢測直接影響帶鋼的產品質量,不銹鋼帶鋼溫度測量依靠的是高溫輻射計,其測量的準確性、穩…

【Python機器學習】算法鏈與管道——通用的管道接口

Pipeline類補單可以用于預處理和分類&#xff0c;實際上還可以將任意數量的估計器連接在一起。例如&#xff0c;我們可以構建一個包含特征提取、特征選擇、縮放和分類的管道&#xff0c;總共有4個步驟。同樣的&#xff0c;最后一步可以用聚類或回歸代替。 對于管道中估計器的唯…

@Validated 根據字段的值不同,動態分組校驗

GroupSequenceProvider 配置 作用域只在單個對象的字段里 Data GroupSequenceProvider(value TestProvider.class) public class TestRO {NotNull(message "不能為空",groups ValidatedRemark.A.class)Pattern(regexp "2|3|",message "只能為2,…

vue2使用use注冊自定義指令實現權限控制

版本環境 vue的版本是^2.6.12&#xff0c;將會使用到Vue.use()、Vue.directive() 適用環境 頁面某些按鈕&#xff0c;需要受到當前登錄用戶的“角色”“權限”的影響&#xff0c;通過store獲取角色role和權限permission&#xff0c;通過自定義指令的方式&#xff0c;控制某一…

antd DatePicker日期選擇框限制最多選擇一年

實現效果 實現邏輯 import React, { useState } from react;const ParentComponent () > {const [dates, setDates] useState(null);const disabledDate (current) > {if (!dates) {return false;}const tooLate dates[0] && current.diff(dates[0], days) &…

Appium自動化測試框架1

電腦的瀏覽器 手機的瀏覽器 手機上的app 原生的應用 純java 手機上的app apk 移動網頁應用 純HTML CSS 手機的瀏覽器上 電腦的瀏覽器上 混合應用 java html css python代碼 Appium python庫 Appium 手機 都是代表本機 0.0.0.0 127.0.0.1 localhost 如何啟動app 啟動參…

土壤養分化驗儀:農業生態與可持續發展

隨著現代農業技術的不斷進步&#xff0c;土壤養分化驗儀在農業生產中扮演著越來越重要的角色。這款高科技設備以其高精度、高效率的特點&#xff0c;為農業生態與可持續發展提供了強有力的支撐。 一、農田土壤監測與管理 農田是土壤養分化驗儀最主要的應用場所。通過對農田土壤…

【AI】DeepStream(14):圖像分割deepstream-segmentation-test示例演示

【AI】AI學習目錄匯總 1、簡介 deepstream-segmentation-test示例演示了圖像的語義分割。兩個配置文件,分別加載U-Net和Res-UNet兩種分割模型 unet_output_graph.uffunetres18_v4_pruned0.65_800_data.uffU-Net是一個在生物醫學圖像分割領域廣泛應用的卷積神經網絡(CNN),…

集團型企業組織架構復雜,業務線多,如何進行高效費用管控?

企業管理中流行這樣一句話&#xff1a;“企業轉型&#xff0c;財務先行”。對集團型企業而言&#xff0c;當今的發展形勢下&#xff0c;通過財務戰略全面轉型、最終撬動企業價值提升&#xff0c;是一件難而正確的事情。 集團企業具有經營規模大、產業鏈多、分支機構多、地域跨度…

地下電子標識器探測儀ED8000選型注意事項

ED8000探測儀是一臺集成了多頻率、多種ID標識器調制模式、高低靈敏度調節、可讀寫標識器等全功能、高性能電子標識器探測儀。它有著極高的靈敏度,同時具備良好的噪聲抑制能力&#xff0c;不僅適合專業測繪人員&#xff0c;普通操作人員也可以輕松掌握。 ED8000可支持模擬電子標…

洛谷 P1042 [NOIP2003 普及組] 乒乓球

洛谷 P1042 [NOIP2003 普及組] 乒乓球 題目背景 國際乒聯現在主席沙拉拉自從上任以來就立志于推行一系列改革&#xff0c;以推動乒乓球運動在全球的普及。其中 11 11 11 分制改革引起了很大的爭議&#xff0c;有一部分球員因為無法適應新規則只能選擇退役。華華就是其中一位…

2024亞洲國際餐飲展覽會(北京餐飲展|火鍋展|預制菜展會)

2024北京餐飲展會&#xff0c;2024北京食材展會&#xff0c;2024北京火鍋展會&#xff0c;2024北京火鍋食材展會&#xff0c;2024北京預制菜展會&#xff0c;2024北京預制食材展會&#xff0c; 2024亞洲國際餐飲展覽會&#xff08;北京餐飲展|火鍋展|預制菜展會&#xff09; …

【C語言】刷題筆記 Day2

【筆記】 【1】局部變量不初始化&#xff0c;默認放的隨機值。 1 int n0; 2 scanf("%d",&n); //13.141 【2】這里雖然輸入的是一個浮點數&#xff0c;但是只取整數部分。 【3】3.156e7 表示的是3.156*10的7次方。 【4】多組輸入&#xff0c;保存和不保存…

基于 Windows Server 2019 部署域控服務器

文章目錄 前言1. 域控服務器設計規劃2. 安裝部署域控服務器2.1. 添加 Active Directory 域服務2.2. 將服務器提升為域控制器2.3. 檢查域控服務器配置信息 3. 管理域賬號3.1. 新建域管理員賬號3.2. 新建普通域賬號 4. 服務器加域和退域4.1. 服務器加域操作4.2. 服務器退域操作 總…

Iperf基本用法

Iperf是一款開源的網絡性能測試工具&#xff0c;它可以用來測量網絡帶寬、延遲、抖動和數據包丟失等網絡性能指標。Iperf支持TCP和UDP協議&#xff0c;可以用于點對點或客戶端-服務器等模式的網絡測試。 安裝Iperf 在Linux系統中&#xff0c;您可以使用包管理器安裝Iperf。例如…