Opencv和Pcl关于VTK版本冲突(Macos)

零蚀


  • 问题的出现
    • 首先说一下这里的vtk时干嘛的,opencv是做2D相关的图像显示,处理,pcl是做3D相关的点云图像显示,处理,这些都是由vtk来实现的。像pcl中visualization就是引用了vtk来显示的,所以当我们用这两个工具的时候会自动引用项目中的vtk库。

    • 如果你和我一样是使用macos来下载Opencv和Pcl时你会发现,当前的Opencv时依赖于vtk9.0,而当前的Pcl是依赖于[email protected],当我们同时find_package(),会出现经典的二选一问题。

    One of the two will be used. Which one is undefined.
    
    • 出现这种问题,只有一个办法,取其一也。

  • 解决思路

    • 这里由于我的opencv是关联的ros,所以这里我不愿意去触碰opencv,所以这里只能从pcl入手,在看pcl的问题记录中,发现pcl虽然是默认[email protected]的,但是它是支持vtk9的,pcl源码中(CmakeLists)也有关于vtk9处理,所以这里可以放心来处理pcl。

    • 这里我们需要卸载掉之前通过brew安装的vtk所有版本,和pcl。因为他们的引用依赖都已经编译好了,这就是智能带来的锅,所以我们需通过源码进行安装vtk和pcl。

    • 安装VTK9.0 [ 下载对应的版本],这里我下载最新的VTK-9.0.1.tar.gz,然后这里我们需要进行编译,这里解压之后,我们需要在根目录中创建一个build,然后不要急着make,这里make一定会出问题的,首先配置一下qt5,因为vtk9大概率是找不到我本地的qt5,我本地是qt@5,所以我们需要指定qt路径。

    # 指定make的qt
    cmake .. -G "Unix Makefiles" -DQT_QMAKE_EXECUTABLE:PATH=/usr/local/Cellar/qt@5/5.15.2/bin/qmake -DVTK_USE_QVTK:BOOL=ON -DVTK_QT_VERSION=5 -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_INSTALL_PREFIX=/usr/local -DVTK_USE_GUISUPPORT:BOOL=ON -DVTK_USE_CARBON:BOOL=OFF
    

    Opencv和Pcl关于VTK版本冲突(Macos)_第1张图片

    • 我们最好下一个cmake工具进行一些功能的筛选,如果显示你的Qt5_DIR没有找到,你需要手动去指定(我每次打开它都没找到),经过不断的configure之后,不再有红条和报错,我们就点击“生成”(Generate),build目录中已经生成了对应的文件,可以进行编译安装了。
    # build下
    make 
    sudo make install
    
    • 同理 我们手动安装pcl,同样在build中生成对应的文件,这里需要先安装好vtk,pcl会根据当前的vtk来进行功能的配置,所以安装顺序不要乱。

    Opencv和Pcl关于VTK版本冲突(Macos)_第2张图片

    # build下
    make 
    sudo make install
    
    • 然后单独测试一下pcl和opencv,还有pcl+opencv的项目即可。在解决问题的过程中,发现vtk缺少hdfs的路径,但是明明安装了,却没有发现对应的cmake文件夹路径,所以在安装的过程中,去掉了vtk的hdfs相应部分,pcl也去掉了hdfs相应部分,如果后期出现问题,再对这边加补充说明吧。
      Opencv和Pcl关于VTK版本冲突(Macos)_第3张图片
      Opencv和Pcl关于VTK版本冲突(Macos)_第4张图片

前言
机器人视觉篇

你可能感兴趣的:(视觉篇,vtk版本冲突,opencv和,opencv和pcl冲突,vtk,conflict)