废话:学习opencv一段时间,最近因为比赛需要使用sift算法,就配置在Ubuntu系统上面配置了一下opencv_contrib扩展包。中间遇到了一些问题,记录下来帮助有需要的同学,也给自己以后配置留一个方便。下面开始进入正题。
正文:在正式安装之前我先介绍一下我的一些配置
电脑:小米笔记本pro15.6 系统:Ubuntu16.04LTS opencv与contrib版本:3.4.4 cmake版本:3.5.1
第一步:下载资源可以去官网去下载,但是速度比较慢。**opencv的版本一定要和contrib版本一致。**我把我的资源已经上传,有需要可以自取。链接:opencv_contrib3.4.4下载链接 opencv3.4.4下载链接
第二步:安装依赖库
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 install -y python-dev python-tk python-numpy python3-dev python3-tk python3-numpy
但是我好像当时并没有安装这么多,因为我之前配置过Opencv,我当时的安装依赖库贴出来,同学们自己比对,缺少安装哪个。
$ sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff5-dev libjasper-dev
libopenexr-dev libtbb-dev # 下载依赖项
第三步:编译opencv
先把opencv和contrib的包解压(解压命令和软件自行百度解决)。将contrib的包放到opencv的文件夹中。在终端中进入opencv的对应文件夹。(一定要在对应文件夹下面,不然后面的操作都白费)。
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.34/modules/ ..
**#如果你要使用sift,surf算法因为涉及到专利问题所以上面的命令应该是:**
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=/home/d/下载/opencv-3.4.4/opencv_contrib-3.4.4/modules/ ..
#modules后面是反斜杠+'空格'+'..' 空格不要丢
这个过程可能需要一点时间,最终效果如下
如果你现在就输入sudo make -j8
(八核处理器就输入-j8 四核输入-j4)(make没有的输入sudo make install 或则sudo apt-get install make)很有可能就会出现问题。
之后是最关键的两个步骤。我不知道是不是因为我的cmake的问题还是别的问题。我在编译的过程中会出现两个问题。如下图
问题是没有找到cuda.hpp文件和boostdesc_bgm.i文件。
问题一解决方法:你搜索目录之后会发现在/home/d/opencv-3.4.4/opencv_contrib-3.4.4/modules/xfeatures2d/include/opencv2目录下面其实有cuda.hpp。
方法一:在opencv的路径下找到opencv3.4.4/modules/stitching/ CMakeLists.txt在文件中添加INCLUDE_DIRECTORIES("/home/d/opencv-3.4.4/opencv_contrib-3.4.4/modules/xfeatures2d/include")
之后在编译问题应该可以得到解决
方法二:直接将/home/d/opencv-3.4.4/opencv_contrib-3.4.4/modules/xfeatures2d/include/opencv2目录下的两个文件复制到home/d/opencv_3.4.4/modules/stitching/include/opencv2目录下。我当初配置第一台电脑是两种方法一起使用成功了 第二次电脑配置时只使用了第一种方法也解决问题,同学们自己判断。
问题二解决方法:出现.i文件缺失。事实上也是这样。我不知道什么原因导致的。所以我去下载了缺少的文件。需要的同学自取(链接:xfeatures2d下载链接
)。
我给出的文件不用修改名称,因为我已经修改好了。直接将两个文件夹内的所有文件拷贝到/home/d/opencv3.4.4/opencv_contrib3…4.4/modules/xfeatures2d/src/中。再重新编译,这应该就可以解决问题。
第四步: make
完成第三步之后就完成了大半,接下里就执行make就ok。
make
sudo make install
附cmakelist简单写法:
#下面opencv_test改成你自己的工程名字
cmake_minimum_required(VERSION 3.14) #cmake版本在终端中输入cmake --version可以查看 不过一般都会自动生成这行语句
project(opencv_test)
set(CMAKE_CXX_STANDARD 14)
find_package(OpenCV REQUIRED)
add_executable(opencv_test main.cpp)
target_link_libraries(opencv_test ${OpenCV_LIBS})