最近在跑PL-SLAM,一开始配置的OpenCV版本为3.1.0,在编译(make)过程中,出现如下问题:
/home/hlx/pl-slam-master/../stvo-pl-master/include/stereoFrame.h:35:32: fatal error: opencv2/ximgproc.hpp: 没有那个文件或目录
造成问题的主要原因是ximgproc模块在opencv的扩展模块opencv_contrib中,opencv在3.2版本之后引入了ximgproc模块,模块主要进行线特征的操作(分割,提取等)所以要先将扩展模块opencv_contrib装好再进行之后的操作
进行OpenCV3.2+OpenCV3.2_contrib的安装:
1.下载
github上的下载地址:https://github.com/opencv
在opencv和opencv_contrib中分别选择版本相同的release包:
注意:在module文件夹下包含了opencv_contrib中所有的组件,如果之后在调用opencv的时候缺少了里面包含的文件,都可以用关联opencv_contrib的方式解决
2.安装:
首先对之前已有的Opencv进行卸载:
首先进入进行编译的build文件夹,打开终端之后输入:
sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
之后开始安装,首先安装依赖项:
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get update
之后进行contrib以及opencv的整体安装:
将下载包解压后,将opencv_contrib-3.2.0移动至opencv-3.2.0目录下
进入opencv-3.2.0文件,打开终端进行
mkdir build;
cd build;
之后进行cmake:
cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules <opencv_source_directory>
在<opencv_contrib>中输入 opencv_contrib路径,在<opencv_source_directory>中输入opencv路径即可
如:cmake -D OPENCV_EXTRA_MODULES_PATH=/home/hlx/opencv_contrib-3.2.0.modules /home/hlx/opencv-3.2.0
cmake成功之后执行
make -j4
sudo make install
过程中可能会遇到的问题:
1.make过程中:
/home/hlx/opencv-3.2.0/opencv_contrib-3.2.0/modules/hdf/include/opencv2/hdf/hdf5.hpp:40:18: fatal error: hdf5.h: 没有那个文件或目录
compilation terminated.
解决方法:
在终端中输入 locate hdf5.h
发现在/usr/include/hdf5/serial/hdf5.h
在opencv_contrib-3.1.0/modules/hdf/include/opencv2/hdf/hdf5.hpp 文件中修改第40行
将#include <hdf5.h> 修改成#include “/usr/include/hdf5/serial/hdf5.h”
2.make过程中:
fatal error: LAPACKE_H_PATH-NOTFOUND/lapacke.h: No such file or directory #include “LAPACKE_H_PATH-NOTFOUND/lapacke.h”
解决方法:
sudo apt-get install liblapacke-dev checkinstall
同上,找到 lapacke.h 文件,将
#include “LAPACKE_H_PATH-NOTFOUND/lapacke.h”
修改为
#include “lapacke.h”
3.cmake过程中
— Downloading v3.1.0/protobuf-cpp-3.1.0.tar.gz…
CMake Error at cmake/OpenCVUtils.cmake:1043 (file):
file DOWNLOAD HASH mismatch
解决方法:
根据错误提示是下载不到对应的文件,多次cmake之后莫名其妙就解决了。。。。。