PCL手記(壹)——PCD文件讀取

Author: 瑯琊土肥圓
E-mail: wt_lor@163.com
Date: 2018-09-21

PCL(Point Cloud Library)全稱點云庫,用于處理LIDAR設備生成的點云數(shù)據(jù)。截止至本文檔的完成之日(2018-09-21),市場主流的LIDAR設備為Velodyne公司提供的。本文基于的設備是Velodyne的16線設備,屬于入門級的低密度LIDAR設備。

閑言少敘,進入正題。本文是PCL手記的首作,自然而然的要講講如何打開一個pcd文件——保存點云數(shù)據(jù)的文件,其具體格式可到這里詳細了解。具體代碼如下所示。

/* pcd_read.cpp */

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

int main(int argc, char **argv)
{
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
  pcl::PCDReader reader;

  reader.read<pcl::PointXYZ>("filename.pcd", *cloud);

  return 0;
}

逐條解釋一下上面的源碼。

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

這兩行引入pcl的io內容以及點云類型(point_types),本例中使用的點云點因為不含有色彩信息,所以其類型為pcl::PointXYZ。有的LIDAR生成的點云點帶有色彩信息,其類型應該為pcl::PointXYZI(帶有灰度信息)和/或pcl::PointXYZRGB(帶有色彩信息)。

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PCDReader reader;
reader.read<pcl::PointXYZ>("filename.pcd", *cloud)

第一行定義一個PointCloud數(shù)據(jù)結構變量,用于暫存(hold)pcd文件中的點云數(shù)據(jù),通過其子域points可以對點云中的點進行 訪問(access)。
第二行定義一個PCDReader的對象,用于讀取pcd文件。
第三行讀取pcd文件。

由于PCL庫大量使用了模板編程,所以需要讀者對于C++的模板編程比較了解,包括模板函數(shù)與模板類。

接下來說明,如何編譯前述源文件。由于本身PCL比較龐大,有很多模塊——類似于OpenCV庫,所以編譯使用此類庫的源文件時,建議使用cmake,而非帶有-L以及-I選項的clang++或者g++。具體的編譯文件如下所示,CMakeLists.txt。

cmake_minimum_required(VERSION 3.0)

project(pcd_read)

find_package(
  PCL 1.2 REQUIRED
)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})

add_executable(pcd_read ./pcd_read.cpp)
target_link_libraries(pcd_read ${PCL_LIBRARIES})

將該CMakeLists.txt文件和pcd_read.cpp放在同一目錄下,在命令行終端運行
$ cmake CMakeLists.txt
即可生成Makefile文件,然后運行
$ make
即可生成可運行文件pcd_read。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,657評論 19 139
  • 無人駕駛汽車的成功涉及高精地圖、實時定位以及障礙物檢測等多項技術,而這些技術都離不開光學雷達(LiDAR)。本文將...
    落草為馬閱讀 649評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,220評論 25 708
  • 2017年無人駕駛還處于積極研發(fā)和普及期,民用的測試和技術探索也主要在小型汽車方面,各大巨頭都將2020年作為一個...
    方弟閱讀 7,601評論 1 16
  • 關于Mongodb的全面總結 MongoDB的內部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,313評論 2 89

友情鏈接更多精彩內容