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的图像就是(红/黑/蓝)三种颜色的图块;但是,后来无意中拖动鼠标,发现显示的区域不对,导致产生不显示的错觉