ubuntu20.04安装pcl的详细步骤和走过的坑
由于项目原因需要用到PCL,因此在小ubuntu虚拟机上准备安装。
根据网上的攻略,需要安装以下依赖库
sudo apt-get update
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.8 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-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 qt-sdk openjdk-8-jdk openjdk-8-jre
然而在安装
sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
出现了问题,提示无法找到正确的正则表达式。
遂三个独特安装,但都安装不上。
上网百度之,将5.10改成5.8进行安装,发现需要的依赖项过多。只能换个方法。
再百度之,发现通过这种方法安装vtk会出现问题,需要通过官网源码进行安装。
去官网下载源码之后解压缩,进入文件目录
mkdir build
cd build
cmake-gui
使用cmake进行配置(参考网上教程图)
然而又出现了新问题,在configure的时候找不到Qt5UiPlugin_DIR的路径,随百度之。
发现是qt版本的问题,需要QT5.8以上,通过默认命令安装的版本貌似不是5.8
sudo apt-get install qt5-default
于是去官网下载最新的5.14
下载之后是.run文件,需要以下命令打开
sudo ./qt-opensource-linux-x64-5.14.0.run
然而在打开时提示没有此命令。
继续百度,发现需要修改权限(用ls文件显示安装包文件,发现文件名是白色而不是绿色,表示其不可执行。)
chmod +x ./qt-opensource-linux-x64-5.14.0.run
sudo ./qt-opensource-linux-x64-5.14.0.run
便可正确打开,默认安装在opt/Qt5.14.0
继续CMAKE的配置,然而还是找不到Qt5UiPlugin_DIR的路径,百度一通也无果。
经过思考后发现路径默认还是之前的qt路径,没有修改,需要手动修改
/opt/Qt5.14.0/5.14.0/gcc_64/lib/cmake/….
正确修改后configure和generate成功,进入build
make -j4
sudo make install
OK,VTK方面暂时安装完毕。下面正式进入pcl的安装
- 不要从官网下载pcl然后自己cmake
- 不要从git上拷贝进行cmake
不然你就会遇到我这样的错误
对于ubuntu 16.04以上,可以使用一行命令进行安装
sudo apt install libpcl-dev
终于安装成功!
进入程序测试。
cmake文件:
find_package(PCL 1.2 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
target_link_libraries (YOUR_PROJECT_NAME ${PCL_LIBRARIES})
add_executable(YOUR_PROJECT_NAME YOUR_FILE_NAME.cpp)
注意第二条,有些时候PCL_INCLUDE_DIR不是pcl/…,而是pcl-1.10(以我的版本为例)/pcl/…
所以可以把里面的pcl复制出来,就可以直接#include “pcl/…”了
c++测试文件:
#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 pcl;
int main(int argc, char **argv) {
std::cout << "Test PCL !!!" << std::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 = 0.5 * cosf (pcl::deg2rad(angle));
point.y = sinf (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");
viewer.showCloud(point_cloud_ptr);
while (!viewer.wasStopped()){ };
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端