一、安装opencv3.2.0
安装过程参考文章Opencv3安装踩坑(SLAM十四讲)针对个人安装过程中报错总结如下:
在与opencv2共存的条件下,重新安装opencv3
首先检查已有的opencv版本:
pkg-config opencv --modversion
如果是2版本,则需要安装3版本
1.安装依赖
sudo apt-get install build-essential libgtk2.0-dev libvtk6-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev libtbb-dev
此时与书上不同的是我装的新版本libvtk6-dev、libtiff5-dev
报错无法定位软件包libjasper-dev的解决办法
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt upgrade
sudo apt install libjasper1 libjasper-dev
其中libjasper1是libjasper-dev的依赖包
2.下载opecv包,并提取到某位置
下载路径:https://codeload.github.com/opencv/opencv/zip/3.2.0
然后进入解压后的文件夹,在终端打开
接下来在命令行输入:
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 ..
make
sudo make install
值得注意的是,cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 …
这里一定要指定安装路径,按这个指令输入!
注意,安装过程中可能会出现一个包ippicv下载过慢,则中断安装后,自己点链接下载:
ippicv下载链接
然后将下载下来的ippicv_linux_20151201.tgz
放入opencv3下面的:
3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e里即可。
然后重新继续安装
最后opencv3就被完整地安装在usr/local下面的个opencv3文件夹
中间若报错: fatal error: stdlib.h: 没有那个文件或目录
则cmake预编译修改为:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 -D ENABLE_PRECOMPILED_HEADERS=OFF ..
主要是加了一个参数:-D ENABLE_PRECOMPILED_HEADERS=OFF
二、查看是否安装成功并测试
1.可以查看版本
pkg-config opencv --modversion
2.在CMakeList.txt中编辑如下代码:
要注意的有
(1)C++11支持
(2)set(OpenCV_DIR “usr/local/opencv3/share/OpenCV”) 设置寻找路径
set( CMAKE_CXX_FLAGS "-std=c++11")
cmake_minimum_required( VERSION 2.8 )
project( imageBasics )
set(OpenCV_DIR "usr/local/opencv3/share/OpenCV")
# 寻找OpenCV库
find_package( OpenCV REQUIRED )
# 添加头文件
include_directories( ${OpenCV_INCLUDE_DIRS} )
# 可执行程序
add_executable( imageBasics imageBasics.cpp )
# 链接OpenCV库
target_link_libraries( imageBasics ${OpenCV_LIBS} )
3.测试代码imageBasics.cpp:
在ch5下打开终端
mkdir build
cd build
cmake ..
make
在build内的imageBasics文件夹终端内输入:
./imageBasics /home/zxh/Code/slambook2/ch5/imageBasics/ubuntu.png
后面是自己图片的路径
报错:Gtk-Message: 16:09:54.200: Failed to load module "canberra-gtk-module"解决方法
sudo apt-get install libcanberra-gtk-module
输出结果如下:
4.测试图像去畸变代码:
在CMakeLists中添加两行
# 可执行程序
add_executable(undistortImage undistortImage.cpp)
# 链接OpenCV库
target_link_libraries(undistortImage ${OpenCV_LIBS})
运行:
./undistortImage /home/zxh/Code/slambook2/ch5/imageBasics/distorted.png
代码运行报错
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /home/zxh/下载/opencv-3.2.0/modules/highgui/src/window.cpp, line 304
terminate called after throwing an instance of ‘cv::Exception’
what(): /home/zxh/下载/opencv-3.2.0/modules/highgui/src/window.cpp:304: error: (-215) size.width>0 && size.height>0 in function imshow
解决方案:
图片和undistortImage 不再同一文件夹。复制到build中即可。
./undistortImage /home/zxh/Code/slambook2/ch5/imageBasics/build/undistortImage
5.测试计算视差图和点云stereoVision.cpp
将CMakeLists更改为
find_package(Pangolin REQUIRED)
find_package(OpenCV 3.0 REQUIRED) #由于好几个版本所以这里指定个高版本的
include_directories(${OpenCV_INCLUDE_DIRS})
#添加Eigen头文件
include_directories("/usr/include/eigen3") #根据你的安装路径来选择
set(CMAKE_CXX_FLAGS "-std=c++11")
add_executable(stereoVision stereoVision.cpp)
target_link_libraries(stereoVision ${OpenCV_LIBS} ${Pangolin_LIBRARIES})
编译后运行
./stereoVision
结果如下: