Ubuntu下Qt中使用pcl库
pcl依賴及安裝
1.一般不用到qt或vtk顯示點云
###pcl通過ppa安裝步驟
//這樣安裝,目前默認安裝的是pcl1.7.2
##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-devsudo apt-get install cmake cmake-guisudo apt-get install libusb-1.0-0-dev libusb-dev libudev-devsudo apt-get install libqhull* libgtest-devsudo apt-get install libgl1-mesa-devsudo apt-get install libxt-devsudo apt-get install freeglut3-dev pkg-configsudo apt-get install libxmu-dev libxi-devsudo apt-get install mpi-default-dev openmpi-bin openmpi-commonsudo 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.runsudo ./home/cbc/下載/qt-opensource-linux-x64-5.9.2.run安裝在home下面
#vtk7(將qt5編譯進去)??????????????
#pcl源碼
pcl下載地址???????
cd /home/cbc/pcl-1.8.1 && mkdir build && cd buildcmake -DCMAKE_BUILD_TYPE=Release ..makesudo make installQtDesigner配置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.csdn.net/wanguku/article/details/60476469?readlog
- opencv3.2&opencv3.2-contribute
源碼下載,解壓縮放在home下???????
cd /home/cbc/opencv-3.2.0rm -rf buildmkdir 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 renderedviewer.showCloud(cloud);//use the following functions to get access to the underlying more advanced/powerful//PCLVisualizer//This will only get called onceviewer.runOnVisualizationThreadOnce (viewerOneOff);//This will get called once per visualization iterationviewer.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的圖像就是(紅/黑/藍)三種顏色的圖塊;但是,后來無意中拖動鼠標,發現顯示的區域不對,導致產生不顯示的錯覺
總結
以上是生活随笔為你收集整理的Ubuntu下Qt中使用pcl库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 猪八戒玉华王:老码农的7项灵魂思考
- 下一篇: 解决Ubuntu18.04下Qt中无法输