ubuntu20.04下安装pcl_ubuntu20.04安装pcl-程序员宅基地

技术标签: ubuntu  计算机视觉  pcl  vtk  

pcl点云数据库,用来进行3D信息的获取与处理,和opencv相比较,opencv是用来处理二维信息,他是学术界与工业界针对点云最全的库,且网络上相关的资料很多。以下是pcl的安装步骤以及遇到的问题。

提前说明,本人用的是ubuntu20.04+pcl1.12.0+vtk7.1.1,使用源码编译的方式,Vtk用来完成点云的可视化。

之前安装过pcl1.12.0+vtk9.1.1,最后pcl安装可视化闪退,所以还是Vtk下载的vtk7.1.1

网络上有说pcl1.8.0+vtk7.1.1是标配,但是在安装pcl1.8.1时出现过错误。

     所以本文选择安装 pcl1.12.1 + vtk7.1.1 +qt5.12(在此不做安装说明)

pcl安装版本推荐ubuntu20.04/18.04 pcl1.12.1+VTK7.1.1、PCL1.13.1+VTK9.1.1+ubuntu22.04

ubuntu18.04_pcl安装

1. 首先安装pcl各种依赖

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.9 libflann-dev  # ubuntu20.4对应1.9
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-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 libopenni-dev
sudo apt-get install libopenni2-dev


可能问题:

(1) sudo apt-get install libflann1.9 libflann-dev 显示无法定位包libflann,

首先去查看系统对应的版本   查看地址:Ubuntu – Package Search Results -- libflann

搜索libflann 选择ubuntu20.04对应的codename代号:focal  :
 打开终端,执行以下命令:

lsb_release -a

 可以看到ubuntu20.04对应libflan1.9

 (2) 安装过程中遇到无法连接的问题,考虑更换源

参考文章:Ubuntu更换软件源_寥廓长空的博客-程序员宅基地_ubuntu源

2. 安装VTK

   下载地址:Download | VTK

本人下载:VTK-7.1.1.zip

 2.1   首先安装vtk各种依赖:

# 首先安装VTK的依赖:X11,OpenGL;cmake和cmake-gui在安装pcl依赖的时候安装过了的话可以跳过
# X11
sudo apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev
# OpenGL
sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev
# cmake && cmake-gui
sudo apt-get install cmake cmake-gui

2.2   安装Vtk

2.2.1   解压到准备好的安装目录。在目录下新建build文件夹 

打开终端输入:  

cmake-gui 

where is the source code: 路径为VTK目录

where to build the binaries:路径为VTK目录下build的路径

如下图:

点击:configure,显示“Configuring done”。

再勾选“VTK-Group-Qt”,点击“Configure”;完成后,显示“Configuring done”;

最后点击“Generate”;显示“Generating done”,完成。

2.2.2  在build目录下,打开终端输入:

make -j8 # 要是8核处理器还比较着急看结果的话,可以:make -j16    
sudo make install

3. 安装pcl

下载地址: Release PCL 1.12.0 · PointCloudLibrary/pcl · GitHub

打开pcl目录,新建build文件夹

在build文件中,打开终端,输入:

cmake -DCMAKE_TYPE=None ..    
make -j8    //  选择8个进程同时处理,如果机子比较差,可以选择make -j4 或者 make
sudo make install

到此pcl下载完成,时间会比较长。

4. pcl测试 

以下使用两段代码进行测试

4.1   文件构成

 cmakelist.txt

cmake_minimum_required(VERSION 2.6)
project(pcl_test)

find_package(PCL 1.12 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)

pcl_test.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,打开终端输入:

cmake ..
make
./pcl_test.cpp

得到结果:

 4.2   另一个测试代码为

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>
 
 
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;
}

运行结果:

如果以上结果没问题,pcl就安装成功了。

5. cloudcompare软件安装

推荐snap安装方式

sudo apt-get update
sudo apt install snap
sudo snap install cloudcompare
cloudcompare.CloudCompare
loudcompare.ccViewer 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_48919875/article/details/123863892

智能推荐

预训练 gpt2_用您自己的语言训练gpt 2-程序员宅基地

文章浏览阅读2.8k次。预训练 gpt2We all know modern day Natural Language Processing (NLP) has progressed by leaps and bounds in the past couple of years following the development of attention networks and transformers. It pav..._gpt2 训练函数

chrom后端设置cookie失败跨域问题报错the set-cookie had to have been set with “sameSite=None“ to enable cross-si-程序员宅基地

文章浏览阅读4.7k次,点赞5次,收藏10次。vue项目运行登录后,后端设置了cookie;但是我是本地起得项目所以现在一直报错登录过期问题;一、后端设置的set-cookie黄色警告报错the set-cookie had to have been set with “sameSite=None” to enable cross-site usageSamesite有三个值,None, Lax,Strict.这个参数是防止跨站攻击用的,因为测试环境,所以最方便就是跨站调试了。刚开始设置cookie 的Domain无效后来经过一番翻云_the set-cookie had to have been set with “samesite=none” to enable cross-s

Unity存档用 LitJson  不支持float类型_litjson不支持float类型怎么搞-程序员宅基地

文章浏览阅读1.3k次。在进行类转json字符串时,报错JsonException: Max allowed object depth reached while trying to export from type System.Single。ok,实际上是类的属性中有json不能识别的数据类型,我这里就脑残的float。去除掉之后就ok了。(备注:用的是LitJson)那一般什么类型是允许的呢?..._litjson不支持float类型怎么搞

ROS中使用mqtt通信:mqtt_bridge 的问题总结_mqtt_is_bridge-程序员宅基地

文章浏览阅读5.9k次,点赞4次,收藏26次。第一个问题刚刚使用mqtt_bridge时,可以顺利的从ros发布消息到mqtt,但是当从mqtt发布消息到ROS时一直报错。按原始代码跑MQTT to ROS会在roslaunch的终端上报错unpack(b): extra data。(后来才发现这是msgpack.dumps不能处理字符串格式报错)通过调试发现是_create_ros_message函数中的msg_dict = s..._mqtt_is_bridge

思科1242 AP无法连接到无线控制器-程序员宅基地

文章浏览阅读1.8k次。思科1242 AP 证书有效期为10年,如果证书到期后,首先,把WLC升级成ios 7.4.140或者8.0.120以上版本,其次,在WLC上输入以下命令关闭AP证书的检测功能config apcert-expiry-ignore {mic|ssc} enable(注意:这个命令只有IOS 7.4.140或者8.0.120以上才有的)最后,在WLC上设置一下,让AP下载WL..._思科wlc关闭证书有效期

N1CTF2019——warmup WP_ctfwarmupwp-程序员宅基地

文章浏览阅读718次。前言国内实力战队出的题目质量都非常高,我不敢想象这就是pwn的签到题。首先说一下这道题如何质量高。这道题涉及到了double free、UAF、tcache attack、IO_FILE的利用。赛后复现用去了我差不多3天的时间来钻研。保护分析程序只有增加、删除、编辑三个操作,并且保护全开,这种情况下只能利用IO_FILE来泄露内存。增加操作中已经限制了分配的大小:漏洞有些隐蔽,..._ctfwarmupwp

随便推点

解决Visual Studio编译运行时出现“error MSB6006: link.exe 已退出,代码为 2“错误的方法_严重性代码说明项目文件行禁止显示状态 错误msb6006“link.exe”已退出,-程序员宅基地

文章浏览阅读8.9k次,点赞22次,收藏14次。平常的学习时我都是用的codeblocks来写代码,之前去一家公司面试时他们给的编译器的VS,完全没用过VS的我一脸懵逼,不知道软件怎么用。(之所以自己写代码不用VS的原因是VS的全家桶太大,一运行起来就卡的要死,电脑不够强大,只好用codeblocks了)。 为了不再继续吃这种亏,我就去装了个VS2019,装好之后写个helloworld,居然运行不了,显示着系统..._严重性代码说明项目文件行禁止显示状态 错误msb6006“link.exe”已退出,

sublime生成html快捷标签布局-程序员宅基地

文章浏览阅读204次。Child: >nav>ul>li<nav> <ul> <li></li> </ul> </nav>Sibling: +div+p+bq<div></div> <p></p> <blockquote></bloc..._sublime的网页布局代码

青龙面板快手极速版教程_青龙 快手-程序员宅基地

文章浏览阅读4.8w次,点赞12次,收藏161次。愿意的可以点一下我的邀请码KuaI ӨY3kSEcknpж 极速版嘛sHoû 温柔的松茸⋏陶啰温馨提示:有时间的可以看看视频,以免收益降低以下是教程1.拉取脚本ql raw https://raw.githubusercontent.com/liuqi6968/-/main/ks_js.js定时规则:一个小时跑一次,一天跑十次,0 1-23/2 * * *详细拉库 配置文件的方法,会用青龙面板的都会吧。不会就留言,我单出一期教程。2.安卓抓包抓包工具:小黄鸟.._青龙 快手

uniapp 开发微信小程序——获取openid-程序员宅基地

文章浏览阅读1.6w次。1、初始化微信云函数 //初始化微信云函数 wx.cloud.init({ // 此处请填入环境 ID, 环境 ID 可打开云控制台查看 env: '********', traceUser: true, })2、调用云函数 // 调用云函数 wx.cloud.callFunction({ name: 'log...

番外 · 凤羽清-程序员宅基地

文章浏览阅读1.1k次。写在两年之后整理邮件时,看见自己两年前写的文章,- -文笔么,呵呵。但是再读,仿佛看见那时还在学校的自己最好不相见,便可不相恋。最好不相知,便可不相思。最好不相伴,便可不相欠。最好不相惜,便可不相忆。 最好不相爱,便可不相弃。最好不相对,便可不相会。最好不相误,便可不相负。最好不相许,便可不相续。 但曾相见便相知,相见何如不见时。安得与

golang使用bcrypt加密算法进行密码的加密与校验_bcrypt.generatefrompassword-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏4次。bcrypt加密算法简单介绍对于同一个密码,每次生成的hash不一样这里写自定义目录标题bcrypt加密算法简单介绍欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown_bcrypt.generatefrompassword

推荐文章

热门文章

相关标签