环境:ubuntu16.04
所需:opencv-3.1.0和opencv_contrib-3.1.0(注意:两者版本必须匹配,可以在github上clone相关版本)
接下来开始安装
1.
将下载好的opencv-3.1.0解压到任意文件夹,如home。
2.
将opencv_contrib-3.1.0解压并拷贝到opencv-3.1.0文件夹内。
3.
打开终端并进入opencv-3.1.0文件夹内:cd ~/opencv-3.1.0
4.
mkdir build
5.
cd build
6.
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv-3.1.0/opencv_contrib-3.1.0/modules/ ..
7.
make
8.
sudo make install
以上步骤通常会遇到如下错误:
1.在cmake阶段会由于网络问题可能出现ippicv_linux_20151201.tgz无法在终端下载的情况,则可以先单独下载ippicv_linux_20151201.tgz之后,把其移动到终端所提示的路径(终端会提示该路径找不到文件)。
2.在make阶段可能会报错如下:fatal error hdf5.h no such file or directory
解决办法:
在opencv-3.1.0/modules/python/common.cmake首行添加如下代码:
find_package(HDF5)
include_directories(${HDF5_INCLUDE_DIRS})
3.还有可能出现如下报错:
[ 98%] Building CXX object modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o
In file included from /home/epinux/dev/opencv_contrib/modules/tracking/include/opencv2/tracking/tracker.hpp:48:0,
from /home/epinux/dev/opencv/build2/modules/python2/pyopencv_generated_include.h:50,
from /home/epinux/dev/opencv/modules/python/src2/cv2.cpp:12:
/home/epinux/dev/opencv_contrib/modules/tracking/include/opencv2/tracking/onlineMIL.hpp:57:23: error: expected unqualified-id before ‘>’ token
#define sign(s) ((s > 0 ) ? 1 : ((s<0) ? -1 : 0))
^
/home/epinux/dev/opencv_contrib/modules/tracking/include/opencv2/tracking/onlineMIL.hpp:57:23: error: expected ‘)’ before ‘>’ token
/home/epinux/dev/opencv_contrib/modules/tracking/include/opencv2/tracking/onlineMIL.hpp:57:23: error: expected ‘)’ before ‘>’ token
modules/python2/CMakeFiles/opencv_python2.dir/build.make:296: recipe for target 'modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o' failed
make[2]: *** [modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o] Error 1
CMakeFiles/Makefile2:13133: recipe for target 'modules/python2/CMakeFiles/opencv_python2.dir/all' failed
make[1]: *** [modules/python2/CMakeFiles/opencv_python2.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
解决方法如下:
打开问题文件 gedit ~/opencv-3.1.0/opencv_contrib-3.1.0/modules/tracking/include/opencv2/tracking/onlineMIL.hpp
修改代码
找到下面这一行
#define sign(a) a > 0 ? 1 : a == 0 ? 0 : -1
替换为
namespace
{
template<typename T> CV_INLINE int sign(const T v)
{
return (v > 0) ? 1 : ((v < 0) ? -1 : 0);
}
} // anon namespace
然后重新make