我的环境是ubuntu1804+pcl1.9.1+opencv3.1.0,为了解决该错误,又装了一个opencv3.4.8,现在是两个opencv共存的状态。
最近在学习高翔博士的SLAM十四讲,在运行第九讲0.2工程时,需要安装VIZ模块,这个模块是在opencv库cmake时可选的,我就回去重新cmake了一次,结果提示错误:invalid use of incomplete type ‘class vtkTexture’。
为了解决这个错误,我试过以下办法
1.卸载VIZ8.2版本,装VIZ6.3版本。无效
2.重装OPencv3.1.0。提示错误:
invalid use of incomplete type ‘class vtkTexture’
3.根据错误,将对应版本的vtkTexture头文件放置到提示的文件夹。无效
在多次尝试后,确定安装opencv3.4.8对我是有效的,这里不建议装opencv4的版本,因为高翔博士书上写的很清楚,他的代码是运行在opencv3版本下的。
多版本opencv安装的步骤
在此之前,如果你也是运行SLAM第九讲0.2的工程,请先安装VTK8.2.0
1.当前opencv安装路径一般在/usr/local,所以要新建一个目录,防止覆盖安装,我新建的目录地址为/usr/opencv3.4.1
2.将下载好的opencv3.4.8解压至文件夹,我解压到文件夹 /home/qch/Data/Tools/library_file/opencv-3.4.8
3.接下来就是熟悉的cmake环节,cmake-gui的用法不会的请百度,很简单
mkdir build
cd build
cmake-gui #调用cmake-gui进行编译
CMAKE_INSTALL_PREFIX是要安装在哪个路径,需要修改,我的安装路径是/usr/opencv3.4.8
WITH_VTK=ON是开启VTK模块,因为我就是要用VTK模块才装的opencv3.4.8,所以开启
4.熟悉的make环节
sudo make
sudo make install
至此,opencv3.4.8版本安装完成,现在系统中存在3.1.0和3.4.8两个版本,接下来就是如何切换这两个版本
多版本opencv的切换
1.打开bashrc文件
gedit ~/ .bashrc
2.在文末增加内容,然后保存退出
export PKG_CONFIG_PATH=/usr/opencv3.4.8/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/opencv3.4.8/lib
//如果不用这个opencv版本了,就把这两句删除,然后再更新一下bashrc就行了
上面这两个路径是你的安装路径,而不是解压路径,请替换成你的
3.更新bashrc文件
source ~/ .bashrc
可能会提示你XXX是一个目录,不用理会,只要上面第2步保存退出就行了
4.至此,opencv版本就切换到3.4.8了,输入以下命令查询版本
pkg-config --modversion opencv
接下来在你需要运行的程序CMakeLists中,指定opencv版本就行了
cmake_minimum_required(VERSION 2.8)
set(OpenCV_DIR "/home/qch/Data/Tools/library_file/opencv-3.4.8/build")
//这里是解压路径,不是安装路径
project(test)
find_package(OpenCV REQUIRED)
参考的博客:https://blog.csdn.net/learning_tortosie/article/details/80594399