必备组件安装

PCL点云库安装

sudo apt install libpcl-dev

注意:如果在Ubuntu14.04下安装的是libpcl-all,一般情况下在Ubuntu的软件仓库里首选带dev后缀的和什么后缀都不带的库版本。这里安装的是PCL1.7版本

最终安装到的路径为:

  • 头文件目录:/usr/include
  • 库文件目录:/usr/lib/x86_64-linux-gnu

所以实际上这个库安装后,只有一些.h文件和在库文件目录中的.so文件。

cmake中调用方法

CMakeLists.txt中:

find_package(PCL required)
include_directories(${PCL_INCLUDE_Dirs})
link_directories(${PCL_LIBRARY_Dirs})
并在最后的target_link_libraries()命令中加入${PCL_LIBRARIES}

注意:只要find_package能够找到库,那一定会产生如下几个变量:

  • PCL_INCLUDE_Dirs:存储的是PCL库所有的头文件所在的目录
  • PCL_LIBRARY_Dirs:存储的是PCL库所有的库文件(共享库或者静态库或者源文件)所在的目录
  • PCL_LIBRARIES:存储的是PCL库每个库文件(即共享库或者静态库或者源文件)的详细位置(包括文件名)
  • PCL_FOUND:存储是否找到了这个PCK库
  • PCL_DEFinitioNS

注意:include_directories作用是添加一个新的目录到cmake的头文件搜索目录里。
link_directories作用是添加一个新的目录到cmake的库文件搜索目录里。然而很多库都喜欢把库文件放在/usr/lib/x86_64-linux-gnu这个文件夹下

VTK库安装

sudo apt install libvtk6-dev libvtk6.2

VTK库在cmake中的使用参见pcl库的使用,几乎一模一样。
注意:由于VTK库与PCL库是配套的,但是大于等于7.1的VTK库会与PCK库不兼容,其体现在InsertTupleValue等找不到。故最好安装小于7.1的版本。具体请参见VTK版本不兼容现象
另外注意在应用商店里python-vtk包和libpcl-dev包先后安装的时候会相互卸载没用到的组件,导致一个安装了,同时另一个被卸载了,请务必注意。

Eigen库的安装

Eigen库的安装,Eigen库是一个只有头文件没有库文件的库,所以使用的时候只需要include_directories导入头文件目录即可。

Boost库的安装

与上述类似,但是注意的是在Ubuntu16.04中,cmake不能自动找到Boost,需要先设置BOOST_ROOT

示例demo

CMakeLists.txt

其cmakelists.txt文件如下:

cmake_minimum_required(VERSION 3.9)
project(pcldemo)
set(CMAKE_CXX_STANDARD 17)

find_package(Eigen3 required)
include_directories("/usr/include/eigen3")#很奇怪的是Eigen只有头文件没有库文件,所以只能通过这种方式导入即可使用Eigen

# pcl
find_package( PCL required)
include_directories( ${PCL_INCLUDE_Dirs} )
link_directories(${PCL_LIBRARY_Dirs})

#Boost
set(BOOST_ROOT "/usr/local/boost") #这个是我自己加的,因为原来Findboost.cmake提示找不到boost库
find_package(Boost required)
include_directories(${Boost_INCLUDE_Dirs})
link_directories(${Boost_LIBRARY_Dirs})

#VTK
find_package(VTK required)
include_directories(${VTK_INCLUDE_Dirs})
link_directories(${VTK_LIBRARY_Dirs})

add_executable(pcldemo main.cpp)
target_link_libraries(pcldemo
        "/usr/lib/x86_64-linux-gnu/libpcl_visualization.so.1.7.2"
        libboost_system.so libboost_filesystem.so
        ${VTK_LIBRARIES}
)

尚待解决的问题:
最棒target_link_libraries的时候,visualization.so必须要用全路径,直接写名字却不行,尚待研究。其次,对于PCL库,直接在target_link_libraries中用${PCL_LIBRARIES}的调用却不行,尚待研究。

main函数

#include <iostream>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/io/pcd_io.h>

int main(int argc,char* argv[]){
    pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);

    pcl::visualization::CloudViewer viewer("Simple Cloud Viewer");
    viewer.showCloud(cloud);

    while (!viewer.wasstopped())
    {
    }
}

注意,网上有些demo是错误的,就在于对cloud的定义上,少了一个ConstPtr子类,我就为这个问题折腾了好几天,果然不能笃信权威啊。

Ubuntu16.04下PCL点云库的安装及使用demo的更多相关文章

  1. win-universal-app – 编译UWP App时出错:“保留使用Windows命名空间.”

    我正在为使用SpeechAPI的Windows10创建一个UWP应用程序但是在编译时我遇到了一个奇怪的错误.场景是这样的:>针对Windows8.1的PCL项目(当我创建项目时,我将Windows10设置为目标,但VisualStudio降级到Windows8.1,因为“它们支持相同的可移植API集”)并且引用了“Windows.Foundation.UniversalApiContract“因为

  2. Ubuntu16.04下PCL点云库的安装及使用demo

    必备组件安装PCL点云库安装注意:如果在Ubuntu14.04下安装的是libpcl-all,一般情况下在Ubuntu的软件仓库里首选带dev后缀的和什么后缀都不带的库版本。然而很多库都喜欢把库文件放在/usr/lib/x86_64-linux-gnu这个文件夹下VTK库安装VTK库在cmake中的使用参见pcl库的使用,几乎一模一样。Boost库的安装与上述类似,但是注意的是在Ubuntu16.04中,cmake不能自动找到Boost,需要先设置BOOST_ROOT示例demoCMakeLists.tx

  3. windows-10 – 类驱动程序和PCL驱动程序之间的区别

    正如标题所暗示的那样,我不确定“我的打印机”中“类驱动程序”和“PCL驱动程序”的实际区别.在我的环境中,我有多个工作站(赢10),Xerox3610通过网络连接.但我不确定,这些工作站的驱动程序安装的最佳实践是什么.根据我的经验和网络搜索,似乎“Xerox3610PCL6”驱动程序用于实现(通用?)PCL,而“Xerox3610类驱动程序”用于为Xerox3610打印机实现(通用?

  4. 在Nvidia TX2上安装Cuda8.0+Cudnn5.1+TensorFlow1.2+OpenCV3.2

    在NvidiaTX2上安装Cuda8.0+Cudnn5.1+TensorFlow1.2+OpenCV3.2工具宿主机:ubuntu14.04、至少50GB存储空间Jetpack3.0:软件下载地址、文档地址因为只有Jetpack3.0包含cuda8.0和cudnn5.1,而Jetpack3.0只能运行在ubuntu14.04上安装Jetpack3.0,并对TX2进行刷机和安装Cuda等框架保证宿主机和tx2在同一局域网下,按照官方文档和Jetpak的提示执行即可,很简单。

  5. compile pcl 1.8.1 from source code on ubuntu 16.04

    1.clonepcl1.8.1gitclonehttps://github.com/PointCloudLibrary/pcl.git2.installeigensudoapt-getinstalllibeigen3-dev3.compileflann1.9.1fromgithubhttps://github.com/mariusmuja/flann4.installboostsudoapt-ge

  6. ubuntu下安装pcl

    sudoapt-getinstallgitcdgitclonehttps://github.com/PointCloudLibrary/pcl.gitcdpclmkdirbuildcdbuildcmake..Notethemissingdevelopmentlibraries,eg:--checkingformodule'eigen3'--package'eigen3'notfound--chec

  7. ubuntu 环境 安装 使用 eigen

    1安装:sudoapt-getinstalllibeigen3-dev2调整,默认安装路径是:/usr/include/eigen3但是要:cd/usr/include/eigen3********:/usr/include/eigen3$ls会有:Eigensignature_of_eigen3_matrix_libraryunsupported需要执行复制命令,将Eigen文件夹放在/usr/

  8. ubuntu eigen 安装与使用

    文章转载的来源:http://blog.csdn.net/dddccc1234/article/details/505350111、安装:sudoapt-getinstalllibeigen3-dev2、调整,默认安装路径是:/usr/include/eigen3cd/usr/include/eigen3Series:/usr/include/eigen3$lsEigensignature_of_

  9. ubuntu16.0源码编译PCL

    不过需要注意几点:1.如果是虚拟机下编译PCL,下载源码时别在linux下用命令下载,太慢,直接在主机上下载解压后复制到虚拟机上;2.参考文章中sudoapt-getremovelibvtk5.8-*安装VTK应该改为sudoapt-getinstalllibvtk5.8-*;3.编译后可能会提示错误,一般都是第三方库没安装正确,我安装过程中VTK库有问题,参考以下方法解决:http://blog.sina.com.cn/s/blog_bf20f6d80102vs8m.html;4.BOOST库有问题,提

  10. windows-7 – 我应该使用什么打印机驱动程序?

    我正在为打印机安装驱动程序,我可以选择PCL(5或6)或PostScript驱动程序吗?你会推荐哪一个?打印机是HPLaserJet2605dn,操作系统是Windows7.对于这种事情你有经验吗?或者它几乎是“看什么工作”?

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部