Ubuntu20.04 + QT5.14.2 + VTK8.2.0 + PCL 1.10 environment configuration


Ubuntu20.04 + QT5.14.2 + VTK8.2.0 + PCL 1.10 environment configuration

1. VTK compilation and installation

1. Library dependencies:

# 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
sudo apt install -y libxt-dev
sudo apt install -y cmake-qt-gui
sudo apt install build-essential cmake

2. Download resources: download VTK8.2.0


3. Compile:

  • create build folder
cd VTK-8.2.0    
mkdir build
cd build 
  • Use cmake-guicompilation: set the source code directory and output directory, check Group and Adavanced, click configure, set as shown below
cmake-gui

insert image description here

  • After clicking configure for the first time, check "VTK-Group-Qt" and click "Configure"; after completion, "Configuring done" is displayed;
    insert image description here
  • Finally click "Generate"; display "Generating done", complete.
    insert image description here

4. Installation

make -j4
sudo make install

5. qtcreator configuration compiledlibQVTKWidgetPlugin.so

  • libQVTKWidgetPlugin.sopath/build/lib

    cd ./lib
    
  • Add it to qtcreator, libQVTKWidgetPlugin.socopy it to the qt path,

    sudo cp libQVTKWidgetPlugin.so /home/ljn/Qt5.14.2/Tools/QtCreator/lib/Qt/plugins/designer
    

insert image description here


Two, PCL installation

1. One-click installation

sudo apt install libpcl-dev

It will install vtk and eigne by default. Later, I will use vtk-8.2 installed by myself. The default installation directory is /usr/local/include

insert image description here

insert image description here

2. Test

  • file structure
    insert image description here

  • CMakeLists.txt

    cmake_minimum_required(VERSION 2.6)
    project(pcl_test)
     
    find_package(PCL 1.10 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/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;
    }
    
    
  • compile test

    mkdir build
    cd build 
    cmake ..
    make 
    ./pcl_text
    
  • operation result

insert image description here

3. Use vtk to display point cloud in qt

1. Introduce dependencies in pro

Introduce related dependencies according to the version installed by itself

INCLUDEPATH += /usr/include/boost
LIBS += /usr/lib/x86_64-linux-gnu/libboost_*.so

INCLUDEPATH += /usr/include/pcl-1.10/
LIBS += /usr/lib/x86_64-linux-gnu/libpcl_*.so

INCLUDEPATH += /usr/include/vtk-7.1
LIBS += /usr/lib/x86_64-linux-gnu/libvtk*.so

INCLUDEPATH += /usr/include/eigen3

Guess you like

Origin blog.csdn.net/ljn1046016768/article/details/131867002