Ubuntu下Qt中使用pcl库

pcl依赖及安装

1.一般不用到qt或vtk显示点云
###pcl通过ppa安装步骤
//这样安装,目前默认安装的是pcl1.7.2

sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl

sudo apt-get update

sudo apt install libpcl-dev

##pcl1.8快捷安装(没有试过)

sudo dpkg -i /home/cbc/下载/PCL-1.8.0-Linux.deb

参考
https://larrylisky.com/2016/11/03/point-cloud-library-on-ubuntu-16-04-lts/


2.正文:为了能用上qt界面交互

###pcl1.8通过源码安装(目的是为了在qt里用pcl)

sudo apt-get update

#boost

sudo apt-get install libboost-all-dev

#eigen3

sudo apt-get install libeigen3-dev

#flann

sudo apt-get install libflann1.8 libflann-dev

#其他一些小的依赖项

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 libqhull* libgtest-dev

sudo apt-get install libgl1-mesa-dev

sudo apt-get install libxt-dev

sudo apt-get install freeglut3-dev pkg-config

sudo apt-get install libxmu-dev libxi-dev

sudo apt-get install mpi-default-dev openmpi-bin openmpi-common

sudo apt-get install mono-complete

//一般默认装以下vtk和qt,但是运行qt里pcl的示例程序行不通,所以不装这些,从源码安装qt和vtk

//sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre

//sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev

#Qt

chmod +x /home/cbc/下载/qt-opensource-linux-x64-5.9.2.run

sudo ./home/cbc/下载/qt-opensource-linux-x64-5.9.2.run

安装在home下面

#vtk7(将qt5编译进去)​​​​​​​​​​​​​​

git clone git://vtk.org/VTK.git//在home目录下

解压缩

mkdir VTK-build&&cd VTK-build//在home目录下

cmake -DVTK_QT_VERSION:STRING=5 -DQT_QMAKE_EXECUTABLE:PATH=/home/cbc/Qt5.9.2/5.9.2/gcc_64/bin/qmake -DVTK_Group_Qt:BOOL=ON -DCMAKE_PREFIX_PATH:PATH=/home/cbc/Qt5.9.2/5.9.2/gcc_64/lib/cmake -DBUILD_SHARED_LIBS:BOOL=ON /home/cbc/VTK-7.1.1

make

sudo make install

#pcl源码

pcl下载地址​​​​​​​

cd /home/cbc/pcl-1.8.1 && mkdir build && cd build

cmake -DCMAKE_BUILD_TYPE=Release ..

make

sudo make install

QtDesigner配置QVTKWidget插件

把/usr/local/plugins/designer/libQVTKWidgetPlugin.so

拷贝到

/home/chen/QT/Qt5.8.0/Tools/QtCreator/lib/Qt/plugins/designer/


参考
https://www.vtk.org/Wiki/VTK/Building/Linux
http://blog.youkuaiyun.com/wanguku/article/details/60476469?readlog

  • opencv3.2&opencv3.2-contribute

源码下载,解压缩放在home下​​​​​​​

cd /home/cbc/opencv-3.2.0

rm -rf build

mkdir build&&cd build

//编译两个包,指明安装位置,默认为/usr/local,指明opencv3.2-contribute模块位置

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=/home/cbc/opencv_contrib-3.2.0/modules/ ..

//只编译opencv3.2

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local

//make&安装​​​​​​​

make 
sudo make install

#如果没有安装在默认/usr/local,比如安装在/usr/local/opencv320,则任何程序调用opencv库,都要在CMakeLists.txt里设置OpenCVConfig.cmake所在目录

set(OpenCV_DIR "/usr/local/opencv320/share/OpenCV/")

 

4. 在QT中配置应用: 

a. "project.pro"配置文件中添加如下路径信息: 

code snippet widget

安装位置、库的链接路径都是根据自己的配置 

b. 测试代码:实际为pcl库文件中的:pcl/doc/tutorials/content/sources/cloud_viewer路径下的demo 

#include <iostream>
#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
using namespace std;
 
int user_data;
 
void
viewerOneOff (pcl::visualization::PCLVisualizer& viewer)
{
    viewer.setBackgroundColor (1.0, 0.5, 1.0);
    pcl::PointXYZ o;
    o.x = 1.0;
    o.y = 0;
    o.z = 0;
    viewer.addSphere (o, 0.25, "sphere", 0);
    std::cout << "i only run once" << std::endl;
 
}
 
void
viewerPsycho (pcl::visualization::PCLVisualizer& viewer)
{
    static unsigned count = 0;
    std::stringstream ss;
    ss << "Once per viewer loop: " << count++;
    viewer.removeShape ("text", 0);
    viewer.addText (ss.str(), 200, 300, "text", 0);
 
    //FIXME: possible race condition here:
    user_data++;
}
 
int
main ()
{
    pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);
    pcl::io::loadPCDFile ("five_people.pcd", *cloud);
 
    pcl::visualization::CloudViewer viewer("Cloud Viewer");
 
    //blocks until the cloud is actually rendered
    viewer.showCloud(cloud);
 
    //use the following functions to get access to the underlying more advanced/powerful
    //PCLVisualizer
 
    //This will only get called once
    viewer.runOnVisualizationThreadOnce (viewerOneOff);
 
    //This will get called once per visualization iteration
    viewer.runOnVisualizationThread (viewerPsycho);
    while (!viewer.wasStopped ())
    {
    //you can also do cool processing here
    //FIXME: Note that this is running in a separate thread from viewerPsycho
    //and you should guard against race conditions yourself...
    user_data++;
    }
 
    return 0;
}

测试效果: 

注意: 在刚开始运行PCL官网上的demo时,也是出现PCD文件正确,数据读取正确的情况下,但是,Demo的图像就是(红/黑/蓝)三种颜色的图块;但是,后来无意中拖动鼠标,发现显示的区域不对,导致产生不显示的错觉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值