Ubuntu 配置安裝PCL
之前一直在Mac下開發,現在入手Ubuntu,也借此學習一下Linux下的源碼編譯安裝過程.
PCL簡介
PCL(Point Cloud Library)是在吸收了前人點雲相關研究基礎上建立起來的大型跨平台開源C++編程庫,它實現了大量點雲相關的通用算法和高效數據結構,涉及到點雲獲取、濾波、分割、配准、檢索、特征提取、識別、追蹤、曲面重建、可視化等。支持多種操作系統平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式實時系統上運行。如果說OpenCV是2D信息獲取與處理的結晶,那么PCL就在3D信息獲取與處理上具有同等地位,PCL是BSD授權方式,可以免費進行商業和學術應用。
具體步驟
1. 安裝依賴項
apt-get update && \
apt-get install -y libflann-dev \
libvtk5-dev \
libqhull-dev
2. 下載源碼
git clone https://github.com/PointCloudLibrary/pcl
cd pcl
3. 配置安裝
cmake -DCMAKE_BUILD_TYPE=Release .
make -j 8 # job數量根據自身的CPU核數定
sudo make install
4. 安裝目錄
- 通過apt安裝的頭文件(如vtk)在
/usr/include
里面 - 通過apt安裝的動態鏈接庫(如vtk)在
/usr/lib
里面 - 自己編譯安裝的頭文件(如PCL)在
/usr/local/include
里面 - 自己編譯安裝的動態鏈接庫(如PCL)在
/usr/local/lib
里面
以上文件夾在寫CMakeLists.txt
使用find_package()
命令都可以找到,這里列出來只是為了更加了解細節,或者有的代碼補全工具會需要庫的具體路徑
測試
main.cpp
#include <pcl/common/common_headers.h>
#include <pcl/visualization/pcl_visualizer.h>
boost::shared_ptr<pcl::visualization::PCLVisualizer> simpleVis(
pcl::PointCloud<pcl::PointXYZ>::ConstPtr cloud)
{
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(
new pcl::visualization::PCLVisualizer("3D Viewer"));
viewer->setBackgroundColor(0, 0, 0);
viewer->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud");
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud");
viewer->addCoordinateSystem(1.0);
viewer->initCameraParameters();
return (viewer);
}
int main(int argc, char **argv)
{
// 創建點雲
pcl::PointCloud<pcl::PointXYZ>::Ptr basic_cloud_ptr(
new pcl::PointCloud<pcl::PointXYZ>);
for (float z(-1.0); z <= 1.0; z += 0.05)
{
for (float angle(0.0); angle <= 360.0; angle += 5)
{
// 底面為橢圓
pcl::PointXYZ basic_point;
basic_point.x = 0.5 * cosf(pcl::deg2rad(angle));
basic_point.y = sinf(pcl::deg2rad(angle));
basic_point.z = z;
basic_cloud_ptr->points.push_back(basic_point);
}
}
basic_cloud_ptr->width = (int)basic_cloud_ptr->points.size();
basic_cloud_ptr->height = 1;
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
viewer = simpleVis(basic_cloud_ptr);
while (!viewer->wasStopped())
{
viewer->spinOnce(100);
boost::this_thread::sleep(boost::posix_time::microseconds(100000));
}
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(demo01)
set(CMAKE_CXX_STANDARD 11)
find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(demo01 main.cpp)
target_link_libraries (demo01 ${PCL_LIBRARIES})
命令
cmake .
make
./demo01
運行結果
小結
之前配環境都是apt一鍵解決,在Mac上也是brew一下,沒有從源碼編譯過,這次實驗可以說更進一步了解了底層細節,學到很多.
Linux上開發還是挺舒服的~