一 文件准备

去opencv官网下载opencv-3.4.5,你也可以选择其他版本,但是opencv的版本必须和opencv_contrib版本一致,官网地址:opencv官网,选择对应版本的Sources文件如下图所示,

接下来下载opencv_contrib-3.4.5,链接:opencv_contrib-3.4.5具体文件如下图,其中zip格式或tar.gz格式选择一个下载即可。

二 命令行安装

1.安装依赖包

首先,更新一下

sudo apt-get update
sudo apt-get upgrade

然后安装依赖包

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 qt5-default ccache libv4l-dev libavresample-dev  libgphoto2-dev libopenblas-base libopenblas-dev doxygen  openjdk-8-jdk pylint libvtk6-devsudo apt-get install pkg-config

在上述依赖库安装完成之后才能开始后续操作。在对上述代码复制时最好一次一句地复制,否则无法安装,终端中会直接跳过,在选择Y/n时无法选择Yes。

可能遇见的问题

其中可能遇见无法安装libjasper-dev的问题,类似下面的页面

XXX@XXX:~/Files/opencv-3.1.0$ sudo apt-get install libjasper-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libjasper-dev

解决方案:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

其中libjasper1是libjasper-dev的依赖包,然后再次安装

sudo apt install libjasper1 libjasper-dev

可以完成所有依赖包的安装操作。

2 安装opencv和opencv_contrib

先解压下载的opencv和opencv_contrib包,建议直接将下载下来的包直接放至home地址下,这样,zip格式的解压代码如下:

sudo unzip opencv-3.4.5.zip
sudo unzip opencv_contrib-3.4.5.zip

tar.gz格式解压代码:

sudo tar zxvf opencv_contrib-3.4.5.tar.gz

然后将解压后的contrib文件移动至opencv-3.4.5文件下

sudo cp -r opencv_contrib-3.4.5 opencv-3.4.5  #复制opencv_contrib到opencv目录下

并在opencv-3.4.5文件夹中新建build文件夹用于后续编译和生成。

cd opencv-3.4.5                               #进入opencv文件夹
sudo mkdir build                              #新建文件夹build

进入bulid文件夹并进行第一次cmake

cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv-3.4.5/opencv_contrib-3.4.5/modules/ -DOPENCV_ENABLE_NONFREE=True ..

注意**-DOPENCV_ENABLE_NONFREE=True**别把-D与OPENCV_ENABLE_NONFREE=True分开,这句就是使用nonfree模块,包括sift等有专利权的模块。
注意后面的两点不可省略,代表其他参数默认。
注意 OPENCV_EXTRA_MODULES_PATH 代表你放置opencv_contrib的modules文件夹的真实地址,如果直接将opencv放在home下那地址与上述参数相同,只需要注意版本号即可。
将上述命令执行之后会发现存在一些问题,主要是一些文件的下载问题,包括ippicv和face_landmark_model.dat以及fatal error: boostdesc_bgm.i: vgg_generated_80. vgg_generated_120.i没有那个文件或目录 。

ippicv和face_landmark_model.dat下载失败的解决方案

1 先下载文件,文件的下载地址可以在提示文件//中找到,直接去该地址下载。或者用百度云下载,链接
链接:opencv-3.4.5ippicv和face_landmark_model.dat 提取码:y50j
2 修改相应的文件,更改文件定位,在此之前,建议安装gedit,个人感觉gedit比vi/vim好用,安装方式:

sudo apt-get update
sudo apt-get install gedit-gmate
sudo apt-get install gedit-plugins
sudo apt-get remove gedit
sudo apt-get install gedit

安装完毕之后,修改相关配置文件,先用gedit打开配置文件。

gedit /home/usrname/opencv_path/opencv/3rdparty/ippicv/ippicv.cmake
#记得usrname换成自己的用户名,opencv_path 换成自己opencv文件夹的路径

也可以直接先打开gedit编辑器,

gedit

然后再用gedit编辑器中的打开选项打开要配置的文件ippicv.cmake。
做以下修改。 将ippicv.cmake文件下的第47行替换为本地路径

"file:///home/usrname/install/"           #本地路径,与你自己下载存放的地址相关
#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"      #原下载地址
#file后面的路径换成对应ippicv下载后保存的路径

更改完ippicv之后,再更改face_landmark_model配置文件,方法大致相同,先打开配置文件

 gedit /home/usrname/tool/opencv-3.4.0/opencv_contrib-3.4.0/modules/face/CMakeLists.txt
#usrname 换成自己的用户名, <tool/opencv-3.4.0>换成自己opencv源码对应的文件夹

然后将CMakeLists.txt文件的第19行修改为本地路径,即将原来的网址修改为下载的文件保存的路径。这个行数不定,与文件相关,主要是找到网址地址。

"file:///home/usrname/install/"     #本地路径,与你自己下载存放的地址相关
#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/"          #原下载地址
# usrname记得替换为自己的用户名,路径记得替换为自己文件对应的路径

这样, ippicv和face_landmark_model.dat下载失败的问题就得以解决。

fatal error: boostdesc_bgm.i: vgg_generated_80. vgg_generated_120.i没有那个文件或目录

这个问题是一堆文件的缺失,包括
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
所以只需要将这些文件下载然后放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
当然,这些文件的下载路径可以在cmake//日志中查看,直接复制其下载地址到网页可以看该到文件的源码,直接拷贝源码并生成同名文件然后放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
或者从百度网盘中下载,然后解压并将这些文件放置到opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
链接:boostdesc_bgm.i等文件
提取码:06oa
这些问题解决之后,还会遇见最后一个问题,就是opencv的stitiching模块中对xfeatures2d的调用地址问题。

对于opencv2/xfeatures2d/cuda.hpp: No such file or directory 类问题的解决方法

这类问题如下:

/usr/local/arm/opencv-3.4.0/opencv_contrib-3.4.0/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp:42:10:
fatal error: /opencv2/xfeatures2d.hpp: No such file or directory#include "/opencv2/xfeatures2d.hpp"^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

可能出现的有四种情况:

 1/home/tian/opencv-3.4.5/modules/stitching/include/opencv2/stitching/detail/matcher.hpp
fatal error:opencv2/xfeatures2d/cuda.hpp2 stitching/src/precomp.hpp:91:12:fatal error:...3 stitching/src/matchers.cpp:52:10: fatal error: opencv2/xfeatures2d.hpp :没有那个文件或目录。4 xfeatures2d/include/opencv2/xfeatures2d.hpp

处理这些问题的方法是一致的,可以采用简单方案或麻烦方案。
简单方案:直接更改stitching模块的cmakelist,可以先用gedit打开CMakeList.txt, CMakeLists.txt文件所在路径为: <你的路径>/opencv-3.4.5/modules/stitching/ CMakeLists.txt 。然后在CMakeLists.txt增加以下内容: INCLUDE_DIRECTORIES("/home/tan/opencv-3.4.5/opencv_contrib-3.4.5/modules/xfeatures2d/include")

gedit /home/tan/opencv-3.4.5/modules/stitching/ CMakeLists.txt

然而,我自己这样做并未生效,所以注意只能采用麻烦方案,就是一种操作重复四次。
麻烦方案:根据出错提示给的路径找到xfeature2d.hpp的文件并用gedit打开,地址如下图红框所示。

第一行描述出错文件的地址,第二行表示具体的代码,都是头文件给定的相对位置定位出错,改成绝对位置即可。具体出错文件的代码如下所示。

40 #ifndef __OPENCV_XFEATURES2D_HPP__
41 #define __OPENCV_XFEATURES2D_HPP__42 #include"/opencv2/xfeatures2d.hpp"

更改如下:

40 #ifndef __OPENCV_XFEATURES2D_HPP__
41 #define __OPENCV_XFEATURES2D_HPP__42#include"/usr/local/arm/opencv3.4.0/opencv_contrib3.4.0/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp"
#这是对应文件xfeatures2d.hpp的绝对位置

将每一种类似错误都这样更改。然后再次cmake。方式与第一次cmake方式相同。
生成完毕会出现以下画面。

--   Install path:                  /usr/local
--
--   cvconfig.h is in:              /home/files/opencv-3.4.5/build
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /home/files/opencv-3.4.5/build

在bulid文件中make

sudo make -j8   #j后面的数字代表用几个线程编译,此为8线程

等前面的百分比变为100%且不会出错即为成功。

sudo make install


到这一步代表opencv安装成功,若中间出现别的问题,建议直接删除bulid文件夹,并按照上述教程重新走一遍。

3 配置环境变量

打开文件

sudo gedit /etc/ld.so.conf.d/opencv.conf

在空白文档中添加

/usr/local/lib

接下来配置库

sudo ldconfig

更改环境变量

sudo gedit /etc/bash.bashrc

在文件后添加

export PKG_CONFIG_PATH=/usr/local/opencv/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv/lib

ok,到这一步,opencv即可宣告配置成功,只需要退出终端即可。

4 测试

1 创建工作目录

mkdir ~/test
cd ~/test
gedit sift_test.cpp

2 在sift_test.cpp中输入以下代码,测试sift模块能否正常运行。利用最常见的sift特征提取和BFMatch测试。

#include <iostream>
#include <opencv2/opencv.hpp>  //头文件
#include <opencv2/xfeatures2d.hpp>
using namespace cv;  //包含cv命名空间
using namespace std;int main()
{//Create SIFT class pointerPtr<Feature2D> f2d = xfeatures2d::SIFT::create();//读入图片Mat img_1 = imread("1.jpg");Mat img_2 = imread("2.jpg");//Detect the keypointsvector<KeyPoint> keypoints_1, keypoints_2;f2d->detect(img_1, keypoints_1);f2d->detect(img_2, keypoints_2);//Calculate descriptors (feature vectors)Mat descriptors_1, descriptors_2;f2d->compute(img_1, keypoints_1, descriptors_1);f2d->compute(img_2, keypoints_2, descriptors_2);    //Matching descriptor vector using BFMatcherBFMatcher matcher;vector<DMatch> matches;matcher.match(descriptors_1, descriptors_2, matches);//绘制匹配出的关键点Mat img_matches;drawMatches(img_1, keypoints_1, img_2, keypoints_2, matches, img_matches);imshow("result", img_matches);imwrite("sift_test.jpg",img_matches);//等待任意按键按下waitKey(0);
}

3 在test文件夹下创建CMakeList.txt

gedit CMakeLists.txt

写入以下内容

cmake_minimum_required(VERSION 2.8)
project( test )
find_package( OpenCV REQUIRED )
add_executable( test sift_test.cpp )
target_link_libraries( test ${OpenCV_LIBS} )

4 编译

cd ~/test
cmake .
make

5 执行
此时test文件夹中已经产生了可执行文件test,下载1.jpg和2.jpg放在test文件夹下,运行

./test

6 结果

参考:

https://blog.csdn.net/CAU_Ayao/article/details/83990246
https://blog.csdn.net/fengxinzioo/article/details/88740915
https://blog.csdn.net/AlexWang30/article/details/99612188
https://blog.csdn.net/weixin_44152895/article/details/102882502

ubuntu 18.04 配置opencv3.4.5+contrib相关推荐

  1. Ubuntu 18.04 配置 国内 apt-get 换源

    文章目录 Ubuntu 18.04 配置 国内 apt-get 换源 1 备份文件 2 用vim进入并编辑文件 3 进入网站 https://mirrors.tuna.tsinghua.edu.cn/ ...

  2. Ubuntu 18.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+SLAM相关库的安装

    文章目录 一.换源 二.安装三方库 2.1 安装必要的依赖项 2.2 安装Pangolin 2.3 安装OpenCV3 2.4 安装Eigen3 三.安装ORB-SLAM2 四.安装ORB-SLAM3 ...

  3. Ubuntu 18.04配置静态IP地址

    在本文中,我们将解释如何使用Netplan实用程序在Ubuntu 18.04中为网络接口配置网络静态或动态IP地址. 想把ubuntu的ip地址设置成静态ip,折腾了一段时间,还是无法成功,特从网上搜 ...

  4. 虚拟机Ubuntu 18.04配置固定IP地址(ens33网卡,eth0也一样)ping百度

    给虚拟机Ubuntu 18.04设置固定IP地址的具体步骤: 第一步:将虚拟机的网络适配器设置为自动桥接模式 确保VNnet0是自动桥接: 第二步:查看自己的网卡名,并配置网络信息 *打开终端,输入i ...

  5. ubuntu 18.04配置SSH及免密登陆

    补充下安装环境: ubuntu:18.04.1 putty:Release 0.72 SSH安装 ssh包括server端和client端, ubuntu 18.04已经安装了client端,可以通过 ...

  6. UCloud Ubuntu 18.04 配置GPU环境踩坑指南,包括驱动,CUDA,Docker,Nvidia-Docker等

    设备:NVIDIA Corporation GV100GL [Tesla V100 PCIe 16GB] (rev a1) # Ucloud Ubuntu 18.04 GPU 环境 Driver,Cu ...

  7. ubuntu 18.04 配置 ASF 挂卡环境

    我已经的身体不能离开ASF了!!! 服务器运行ubuntu18.04,详细请见 https://www.vultr.com/?ref=7779296 官方中文wiki https://github.c ...

  8. Ubuntu 18.04 配置ibus中文拼音输入法

    18.04系统想安装中文输入法(利用ibus输入法配置)只要三步. 注意:你的Ubuntu需要可以上网!!!因为要下载一系列安装包 第一步:首先需要给Ubuntu18.04安装Chinese语言包支持 ...

  9. Ubuntu 18.04配置及美化 (20.04 / 22.04基本相同)

    2023-04-07更新: 安装 Nerd Fonts 字体 2023-03-10更新: 添加官方Linux版本的QQ 添加官方Linux版本的QQ音乐 添加rEFInd引导的配置文件示例 2022- ...

最新文章

  1. 排序算法7---快速排序算法
  2. MongoDB报表实例 -- 标签成员方案
  3. ASP.NET MVC Module
  4. 【内网安全】域横向网络传输应用层隧道技术
  5. StringWriter/PrintWriter在Java输出异常信息中的作用
  6. 如何禁止网络爬虫频繁爬自己网站
  7. 复合索引和一般索引的问题
  8. Web前端文档阅读笔记-vis.js动态添加节点(vue cli环境)
  9. 从零搭建 vue-cli 脚手架
  10. mqtt 多个订阅者 只允许一个接收_一文读懂物联网的灵魂MQTT
  11. 神奇的go语言(聊天室的开发)
  12. 《Redis实战》一2.1 登录和cookie缓存
  13. android小游戏 猜拳游戏设计
  14. 什么转换器能将excel转换成pdf
  15. led阵列设计matlab代码,阵列信号处理MATLAB程序
  16. 时速云Kubernetes进阶培训 第三期
  17. linux安装音乐软件教程,Ubuntu 下安装深度音乐播放器
  18. php测试宽带速度慢,别被运营商骗了! 手把手教你学会测自家网速
  19. VS2008下编写Colors应用程序
  20. 神经网络(深度学习)入门学习

热门文章

  1. 2022年最强软件测试教程大汇总:测试基础+自动化测试进阶自学教程
  2. 计算压力倍增,携程度假起价引擎架构演变
  3. 【数据应用案例】隐私保护与PATE方法
  4. XenApp_XenDesktop_7.6实战篇之一:走进桌面虚拟化世界
  5. 咸鱼硬件—Micropython介绍
  6. 如何设置局域网ip地址
  7. dedecms织梦调用指定顶级栏目名称的方法
  8. 国际金融——我国服务贸易逆差的成因及对策研究
  9. git bash here将本地代码更新到远程仓库
  10. MySQL取别名(应该取有意义的别名)