02-ubuntu 14.04 64位 安装Opencv-4.1.0 (包含opencv_contrib模块)

前言:

据官方说法,目前还不是太稳定的算法模块都在opencv_contrib里边,由于不稳定,所以不能在release版本里发行,只有在稳定以后才会放进release里边。但是这里边有很多我们经常要用的算法,比如SIFT,SURF等(在xfeatures2d 模块里边)。官网提供了说明,可以把opencv_contrib扩展模块添加编译到已安装的opencv4.1.0里边,也可以安装的时候直接把扩展模块编译进去一并安装。(写的时候是opencv3.0.0)

1.依赖关系:

  • GCC 4.4.x or later
  • CMake 2.8.7 or higher
  • Git
  • GTK+2.x or higher, including headers (libgtk2.0-dev)
  • pkg-config
  • Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
  • ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
  • [optional] libtbb2 libtbb-dev
  • [optional] libdc1394 2.x
  • [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
  • [optional] CUDA Toolkit 6.5 or higher

注:官方文档中虽然说其中一些依赖包是可选的,但是最好还是都装上,以防出问题。

以上依赖包可用以下命令安装:

[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libdc1394-22-dev

2.下载源码:

a.可以从opencv官网直接下载:https://opencv.org/releases/

b.从github上clone

1.cd ~/
2.git clone https://github.com/opencv/opencv.git
3.git clone https://github.com/opencv/opencv_contrib.git

3.CMake Opencv源码:

建立一个编译目录(例如:/build)把cmake后的文件都放在这里边。

1.cd ~/opencv
2.mkdir build
3.cd build

然后开始cmake,这里需要注意几个cmake的参数,比较重要。

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH= ..

注:命令中最后的" … "(空格+两个点)千万不要忘记

其中 CMAKE_BUILD_TYPE=Release / Debug

OPENCV_EXTRA_MODULES_PATH 就是用来指定要编译的扩展模块,后边加上刚下载的opencv_contrib模块的路径即可

我的路径:/home/shining/Opencv/opencv-4.1.0/opencv_contrib
这里我将opencv_contrib移到opencv文件夹,并在opencv文件夹创建build:mkdir build

进入build文件夹进行编译:

cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D OPENCV_ENABLE_NONFREE=True ..

-D OPENCV_ENABLE_NONFREE = True 这个非常重要,这个是安装opencv专利模块的语句。

4.把代码编译成可执行文件,这里官方推荐使用多进程编译,推荐七个进程:

make -j7 # runs 7 jobs in parallel

5.安装

sudo make install

6.运行测试

进入samples:
02-ubuntu 14.04 64位 安装Opencv-4.1.0 (包含opencv_contrib模块)_第1张图片
编译:cmake .
make
./opencv_example

总结:

在编译过程中,出现了两个问题:
/home/shining/opencv-3.4.6/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:653:37: fatal error: boostdesc_bgm.i: 没有那个文件或目录
#include “boostdesc_bgm.i”
1.缺少以下几个文件

  • boostdesc_bgm.i
  • boostdesc_bgm_bi.i
  • boostdesc_bgm_hd.i
  • boostdesc_lbgm.i
  • boostdesc_binboost_064.i
  • boostdesc_binboost_128.i
  • boostdesc_binboost_256.i
  • vgg_generated_120.i
  • vgg_generated_64.i
  • vgg_generated_80.i
  • vgg_generated_48.i

解决方法:
增加这几个文件
参考;https://answers.opencv.org/question/113942/cmake-failing-with-hash-mismatch/中有相应的

2.后面又出现两次找不到文件的情况,但是不是缺少这个文件,而是include中的文件路径出现错误

------------------------------------------------------------------------------------------------------------------------------------------------------------------
cmake过程中会下载很多需要的文件,没有下载成功也不会报错,所以没注意的话一般就直接执行下一步了,然后make时报错,通常根据make时的提示寻找问题,但其实根源是在cmake时出现的,所以先解决cmake的问题。

参考github上的issue:https://github.com/opencv/opencv_contrib/issues/1131
有网友根据提示Download failed: 1;"unsupported protocol"认为是因为下载出错引起的,所用的cmake版本没有支持HTTPS,于是重新安装了cmake

tar -zxvf cmake-3.14.4.tar.gz
cd cmake-3.14.4
sudo apt-get install libcurl4-gnutls-dev
sudo apt-get install zlib1g-dev
./bootstrap --system-curl
sudo make && sudo make install

安装完之后然后重新cmake,cmake两遍看出现的问题2(第一遍出错时信息太多,没显示出错的地方,cmake第二遍)
(安装支持HTTPS的cmake不是直接解决问题,而是可以更清楚地看问题的根源)

https://github.com/opencv/opencv_contrib/issues/1131

你可能感兴趣的:(02-ubuntu 14.04 64位 安装Opencv-4.1.0 (包含opencv_contrib模块))