零蚀
首先说一下这里的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
# build下
make
sudo make install
# build下
make
sudo make install
前言
机器人视觉篇