注意:在安装pcl之前一定要将ubuntu的源切换到国内源,不然大概率成功不了!!!!!!!!!
#一、安装PCL
1.安装依赖包:
sudo apt-get update
sudo apt install make
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libflann1.9 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk7.1-qt
sudo apt-get install libvtk7.1
sudo apt-get install libvtk7-qt-dev
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install openjdk-8-jdk openjdk-8-jre
2.下载pcl安装包,官网地址下载,这样可以自己选择需要的版本。我选择的1.8,也可以通过以下命令下载:
git clone https://github.com/PointCloudLibrary/pcl.git
3.编译:
将下载好的安装包解压到指定文件夹,在终端中打开该文件夹。
创建编译包并进入:
mkidr 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 ..
make:
使用以下命令查看CPU进程数,为的是下面make的更快:
nproc
我的进程数是4,所以我后面的数字是4,根据自身情况选择。
sudo make -j4
这个编译要一段时间,编译过程中可能会出现警告,不过不影响使用,我目前还没有遇到什么问题。
4.安装
sudo make install
#二、测试PCL
在桌面新建一个pcl_test文件夹,文件夹的名字一定要和我的一致,不然还需要修改CMakeLists.txt文件。
注意:在测试之前需要确保自己在ubuntu上配置了C++环境,也就是安装g++,gcc。
sudo apt install gcc
sudo apt install g++
1.在pcl_test文件夹下新建一个文件pcl_test.cpp文档并写入:
#include <iostream>
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/console/parse.h>
using namespace std;
int main(int argc, char **argv) {//柱型点云测试
cout << "Test PCL !" << endl;
pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
uint8_t r(255), g(15), b(15);
for (float z(-1.0); z <= 1.0; z += 0.05) {//制作柱型点云集
for (float angle(0.0); angle <= 360.0; angle += 5.0) {
pcl::PointXYZRGB point;
point.x = cos (pcl::deg2rad(angle));
point.y = sin (pcl::deg2rad(angle));
point.z = z;
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);
point_cloud_ptr->points.push_back (point);
}
if (z < 0.0) {//颜色渐变
r -= 12;
g += 12;
}
else {
g -= 12;
b += 12;
}
}
point_cloud_ptr->width = (int) point_cloud_ptr->points.size ();
point_cloud_ptr->height = 1;
pcl::visualization::CloudViewer viewer ("test_pcl");
viewer.showCloud(point_cloud_ptr);
while (!viewer.wasStopped()){ };
return 0;
}
2.建立配置文件:CMakeLists.txt,并写入:
cmake_minimum_required(VERSION 2.6)
project(test_pcl)
find_package(PCL 1.2 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(pcl_test pcl_test.cpp)
target_link_libraries (pcl_test ${PCL_LIBRARIES})
install(TARGETS pcl_test RUNTIME DESTINATION bin)
3.在pcl_test文件夹下新建文件夹build并进入:
mkdir build
cd build
4.编译
依次在终端中输入:
cmake ..
make
等待编译完成。。。
5.显示点云数据
编译完成后,会在build文件夹下生成一个可执行文件,运行它:
./pcl_test
滚动鼠标能够放大缩小点云数据,可以看到完整的点云数据。
最近入门三维点云的配准和语义分割,后续会更新一些这些方面的文章,希望可以一起学习、进步。