MAC 如何配置 PCL 庫並在 VS Code 中使用
首先,讓我們簡單介紹一下。PCL(英語:Point Cloud Library)是一個開源的演算法庫,用於處理點雲和計算機視覺中的三維幾何過程。PCL包含點雲濾波、特徵估計、三維重建、點雲配準、模型擬合、目標識別和分割等演算法。每個模組都由一個更小的庫實現(如:libpcl_filters
、libpcl_features
、libpcl_surface
等),可以單獨編譯。PCL有自己的儲存點雲的資料格式——PCD(英語:Point Cloud Data),但也可以載入和儲存許多其他格式的資料。它是用C++ 編寫的,並在BSD許可下發布。
接下來我將介紹我如何在 MAC OS 上配置 PCL 並編譯執行一個示例程式。
Step1 安裝 Homebrew
開啟終端,輸入:
ruby -e "$(curl --insecure -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Step2 使用 Home-brew 安裝 PCL
brew install pcl
這樣就會安裝到 PCL 的相關依賴庫。我這裡下載到的路徑是:(透過 ⌘command + ⇧shift + . 開啟隱藏軟體檢視)/usr/local/Cellar
下(這在後面的配置中很重要)
Step3 編譯並測試一個示例的 PCL 程式碼
首先,我們需要在工程目錄,或者當前的目錄下新建 CMakeLists.txt
例如 (~/Desktop/PCL_Test/CMakeLists.txt
),在該檔案中寫入:
我們可以先在終端中測試是否存在
cmake
,如果不存在可以使用brew install cmake
安裝
cmake_minimum_required(VERSION 2.6 FATAL_ERROR) # 選擇cmake版本
project(PCLtest) # 給工程命名
find_package(PCL 1.3 REQUIRED COMPONENTS common io) # 使用find_package尋找指定版本PCL的指定模組,如果想匯入全部模組,也可以寫為 find_package(PCL REQUIRED) include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(PCLtest main.cpp)
target_link_libraries(PCLtest ${PCL_LIBRARIES})
這一段我目前也沒有看懂。
其次,我們在當前工作目錄建立一個 main.cpp
(~/Desktop/PCL_Test/main.cpp
),並寫入:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
int main (int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ> cloud;
// Fill in the cloud data
cloud.width = 5;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize (cloud.width * cloud.height);
for (size_t i = 0; i < cloud.points.size (); ++i)
{
cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
}
pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);
std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;
for (size_t i = 0; i < cloud.points.size (); ++i)
std::cerr << " " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;
return (0);
}
隨後在,當前工作目錄新建 build
資料夾,如(~/Desktop/PCL_Test/build
)
cd ~/Desktop/PCL_Test
mkdir build
最後開啟終端,進行編譯:
cd build
cmake ..
make
編譯後執行工程檔案(樣例中,我們命名的是 PCLtest
:
>>>> ./PCLtest
>>>> Saved 5 data points to test_pcd.pcd.
0.0080142 0.694695 -0.26015
-0.342265 -0.446349 0.214207
0.173687 -0.84253 -0.400481
-0.874475 0.706127 -0.117635
0.908514 -0.598159 0.744714
Step4 解決在 VS Code 中的使用問題。
因為 PCL
是新下載的,如果我們不把路徑告訴 VS Code 的話,就會在 include
的位置,出現特別折磨的紅色波浪線。
我們透過以下幾步即決:
⌘command + shift + p
呼叫出命令皮膚- 選擇,
首選項,開啟使用者設定(JSON)
- 進去後,找到
"C_Cpp.default.includePath"
新增對應路徑:(我們只需要新增最後兩個即可,eigen
是用於解決 #include <pcl/io/pcd_io.h>
的路徑問題。
"C_Cpp.default.includePath": [
"xxxxx",
"/usr/local/Cellar/pcl/1.12.1_2/include/pcl-1.12/",
"/usr/local/Cellar/eigen/3.4.0_1/include/eigen3"
],