Qt5.14.2 编译器msvc2019 PCL1.11.1 点云可视化工具部署

预防针:请严格跟着步骤走,这是本人用三天时间蹚出来的坑

一:下载

  1. PCL下载地址:https://github.com/PointCloudLibrary/pcl/releases  下载如图中的1、2两个文件

二:安装

  1. 打开下载的第一文件(安装包),进行安装
  2. 解压下载的第二个文件,将解压包里的pdb文件复制到第一步安装路径下的:bin目录下
  3. 打开安装路径下的文件夹:3rdParty\OpenNI2,点击可执行文件:OpenNI-Windows-x64-2.2.msi,进行安装

三:配置全局变量

  1. 打开全局变量设置
  2. 将以下几个路径添加到全局变量中
    1. %PCL_ROOT%\3rdParty\FLANN\bin
    2. %PCL_ROOT%\3rdPartyQhull\bin
    3. %PCL_ROOT%\3rdParty\VTK\bin
    4. %PCL_ROOT%\bin
    5. %OPENNI2_REDIST64%
    6. %OPENNI2_LIB64%

四:创建测试案例

  1. 创建测试项目
  2. pro文件编写
    1. #高能警告:如果你的安装路径存在空格的请用:$$quote()函数将路径包起来,例如: #$$quote('H:/PCL1.11.1/lib')
      #
      #将库的路径改成自己安装库的路径
      allLibFiles += \
                      $$quote('H:/PCL1.11.1/lib') \
                      'H:/PCL1.11.1/3rdParty/VTK/lib' \
                      'H:/PCL1.11.1/3rdParty/Qhull/lib' \
                      'H:/PCL1.11.1/3rdParty/FLANN/lib' \
                      'H:/PCL1.11.1/3rdParty/Boost/lib_runTimelinkShared/lib' \
                      $$quote('D:/windowSorftDefaultPath/Program Files/OpenNI2/Lib') \
      
      
      for(var, allLibFiles) {
          myLibs += $$files($$join(var, , , '/*.lib'), true)
          for(oneLib, myLibs){
              p_name = $$dirname(oneLib)
              e_name = $$basename(oneLib)
              e_name = $$replace(e_name, '\.lib',)
              LIBS += -L$$p_name -l$$e_name
              #message(-L$$p_name -l$$e_name)
          }
      }
      
      LIBS = $$unique(LIBS)
      
      #将以下的路径改成自己的路径
      INCLUDEPATH += $$quote('D:/windowSorftDefaultPath/Program Files/OpenNI2/Include') 
      #注意上面这个,这是OpenNI2安装路径,不知道在哪,就去系统盘下的windowSorftDefaultPath/Program #Files去找
      INCLUDEPATH += 'H:/PCL1.11.1/3rdParty/Boost/lib_runTimelinkShared/include/boost-1_74'
      INCLUDEPATH += 'H:/PCL1.11.1/3rdParty/Eigen/eigen3'
      INCLUDEPATH += 'H:/PCL1.11.1/3rdParty/FLANN/include'
      INCLUDEPATH += 'H:/PCL1.11.1/3rdParty/Qhull/include'
      INCLUDEPATH += $$quote('H:/PCL1.11.1/3rdParty/VTK/include/vtk-8.2')
      
      INCLUDEPATH += 'H:/PCL1.11.1/include/pcl-1.11'
      DEPENDPATH +=  'H:/PCL1.11.1/include/pcl-1.11'
      
  3. 在main函数中写入测试代码
    1. #include <QApplication>
      #include "pcl/io/pcd_io.h"
      #include "pcl/point_types.h"
      #include "pcl/io/io.h"
      #include "pcl/io/file_io.h"
      #include <pcl/io/pcd_io.h>
      #include <pcl/io/obj_io.h>
      #include <pcl/PolygonMesh.h>
      #include <pcl/point_cloud.h>
      #include <boost/thread/thread.hpp>
      #include <pcl/visualization/cloud_viewer.h>
      #include <QDebug>
      
      #include <pcl/io/vtk_lib_io.h>
      #include "pcl/visualization/pcl_visualizer.h"
      #include "vtkAutoInit.h"
      
      using namespace pcl;
      
      
      int main(int argc, char *argv[])
      {
          std::string fileName = "F:/qttest/1.obj"; //这里这个要改成你要显示的OBJ文件
          pcl::PolygonMesh meshData;//读取原始数据
          pcl::io::loadPolygonFile(fileName, meshData);
      
          pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
          cloud.reset(new pcl::PointCloud<pcl::PointXYZ>);
          pcl::fromPCLPointCloud2(meshData.cloud, *cloud);//将obj数据转换为点云数据
      
          // 显示结果图
          boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new             pcl::visualization::PCLVisualizer ("3D Viewer"));
          viewer->setBackgroundColor (0, 0, 0); //设置背景
          viewer->addCoordinateSystem (15.0);   //设置坐标系
          viewer->initCameraParameters ();
          viewer->addPointCloud(cloud, "show");
          while (!viewer->wasStopped())
          {
              viewer->spinOnce (100);
              boost::this_thread::sleep (boost::posix_time::microseconds (100000));
          }
          return 0;
      }    
      
      

高能:

  1. 如果你编译通过、运行失败,请按照这个方法来
    1. 检查main函数中,指定的obj文件是否存在,或文件路径的 / 分隔符是否正确
    2. 请到PCL、VTK、boost等(凡是依赖都要)的动态库复制到可执行文件夹下面

备注:

  1. pcl1.11.1采用的是msvc2019,如果你想用msvc2017/2015,那么你就需要去编译替换依赖库:boost,编译方式在这:https://blog.csdn.net/JimBraddock/article/details/118033113
  2. 我在pcl里的vtk包中没有发现可以直接用于qt嵌入vtk的窗口插件,所以如何编译vtk,将vtk直接嵌入到qt窗口,请移步:https://blog.csdn.net/JimBraddock/article/details/118032361

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值