/home/znkz/slam/ch7/ch7/main.cpp:25:32: error: no matching function for call to ‘cv::ORB::create()’
znkz@znkz:~/slam/slambook-master/ch7/build$ pkg-config --modversion opencv
2.4.8
由于高翔十四讲基于opencv3,所以安装版本3.4.0
尝试一:多版本共存,在已安装2.4.8基础上,自定义路径安装3.4.0:
参考:
Ubuntu 16.04 编译安装OpenCV 3.1及OpenCV多版本切换
Ubuntu16.04卸载其他版本的opencv并安装opencv3.2.0+opencv contrib3.2.0
znkz@znkz:~cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.0 ..
修改环境变量
znkz@znkz:~$ sudo gedit /etc/bash.bashrc
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv3.4.0/lib/x86_64-linux-gnu/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv3.4.0/lib
pkgconfig中的opencv.pc保存有对应opencv的include和lib路径,sudo ldconfig后生效
验证:
znkz@znkz:~$ pkg-config --modversion opencv
3.4.0
但是。。。系统还是自动在/usr/local/include和/usr/include中搜索,so..
尝试二:放弃自定义路径,删掉/usr下的旧版本,再编译安装
znkz@znkz:~/slam/ch7/ch7/build$ sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2/
znkz@znkz:~/slam/ch7/ch7/build$ cd /usr/
znkz@znkz:~/slam/ch7/ch7/build$ find . -name "*opencv*" | xargs sudo rm -rf
再编译安装即可