目录

一、简要说明

二、下载和添加依赖包

三、配置OpenCV

四、配置环境变量

新建一个 opecv.pc (勾选了就跳过此步骤,勾选生成的opencv4.pc 我印象中好像不用修改的,不放心可以打开看看确认一下 )

那么这个 opencv.pc 要放在哪里?

五、测试


结合了几个博主的安装说明,根据自己的安装经验进行总结,感谢lalulaBar、Hzhihua两位,引用文章如下

https://blog.csdn.net/u011897411/article/details/89743448

https://blog.csdn.net/jindunwan7388/article/details/80397700

https://www.freesion.com/article/19371325867/

一、简要说明

OpenCV_contrib

OpenCV3.0以上的版本,把一些不稳定的函数放到了第三方库OpenCV_contrib中(比如sift,surf等),为了应用这些功能,我们需要通过CMake把OpenCV_contrib中的功能重新加入到OpenCV3.2.0中。

关于OpenCV_contrib,可以参见官方说明:https://github.com/opencv/opencv_contrib/blob/master/README.md

二、下载和添加依赖包

1、首先更新 apt-get,在安装前最好先更新一下系统,不然有可能会安装失败。在终端输入:

sudo apt-get update
sudo apt-get upgrade

2、接着安装官方给的opencv依赖包,在终端输入:

# 因为安装 libjasper-dev 这个依赖包可能会出问题,所以先执行以下命令,在执行后续依赖包的安装
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
# 而且一路配置过来犯过一些错(具体错误 ——> 问题 4),说 libgtk 依赖要先于 opencv 某些依赖安装(——> 参考 9),保险起见
sudo apt-get install libgtk-3-dev libgtk2.0-dev pkg-config# 接下来就可以执行后续命令
# 可以输入下面的一次装,省心省力# 分步装
sudo apt-get install build-essential
# opencv4.1.0需要 libgtk-3-dev
sudo apt-get install cmake libgtk-3-dev libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python3-dev python3-numpy python-dev python-numpy libpython3.6-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libopenexr-dev
sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
sudo apt-get install ffmpeg# 一次装 (就是把上面的依赖全部写成一行,省心,下载过程中有些依赖需要你确认,-y 是替你输入 y ,省力)
sudo apt-get -y install build-essential cmake libgtk-3-dev libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy python-dev python-numpy libpython3.6-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libjasper-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev libopenexr-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran ffmpeg

3、下载opencv4.1.0和opencv_contrib4.1.0

https://github.com/opencv/opencv/releases

https://github.com/opencv/opencv_contrib/releases

4、接下来安装CMake-gui,在终端输入

sudo apt-get install cmake-qt-gui

三、配置OpenCV

1、将OpenCV4.1.0和OpenCV_contrib-4.1.0解压(提取),如图所示

2、双击进入解压出来的OpenCV4.1.0文件夹,右键打开终端(或者在别处打开终端,通过输入cd opencv4.1.0进入当前目录下),然后依次输入(不要忘了第三行的最后的空格和两个点):

mkdir buildcd build cmake-gui .. 3、然后会弹出CMake的图形化界面,在上方的两个路径里面,选择好代码所在文件夹的路径和要安装的路径

4、点击左下方的Configure按钮,选择Unix Makefiles,选择Use default native compilers(默认),然后点击Finish

5、需要下载一些文件,要等待一段时间。然后CMake即载入默认配置,如下图所示:

窗口的中间部分即配置列表,这里和使用cmake命令直接生成makefile文件一致的。正如上文所述,这里通过图形界面的方式来进行配置,更加直观方便。

6、这里需要对两个地方进行修改:

(1)在CMAKE_BUILD_TYPE 值处输入RELEASE,其他保持不变(如果已经存在就不必修改)。
下方的CMAKE_INSTALL_PREFIX显示了默认的安装目录,生成makefile文件最后执行 make install时就会安装到这个目录,这里可以根据个人需求更改。我这里就不做修改了。

(2)在OPENCV_EXTRA_MODULES_PATH处,选择输入目录(单击这一行后方空白处即可选中)

然后选择opencv_contrib-3.2.0文件夹中的modules文件夹,注意,不是只选中opencv_contrib-3.2.0文件夹就好了,需要选中里面的modules文件夹!    如下图所示,然后点Choose。
注:OPENCV_EXTRA_MODULES_PATH 是用来指定要编译的扩展模块,其中包括OpenCV_contrib模块。

7、点击Generate生成配置文件,这一步应该比较快就完成了。

8、接着,在build目录下打开终端,输入

make

sudo make install

9、然后就开始安装了,这一步又需要等比较长的时间了……不要急,进行到这一步说明很快就能安装成功了~

当你执行完上面两行命令的时候,并看到100%的时候,恭喜你!安装成功!

10、编译过程中可能会报错

编译过程中出现如下错误:

①fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory

原因是没找到这个文件,解决方法如下:

将opencv 4.1.0/ modules / features2d复制,然后粘贴到build目录中来解决该问题。

②出现fatal error: boostdesc_bgm.i: No such file or directory。

原因是下载的时候没有fq所以下图的文件没下载下来,解决方法如下:

自己去github或是其他网站把这些文件下载下来,然后放到opencv_contrib/modules/xfeatures2d/src目录下就可以了。

下载链接:https://github.com/opencv/opencv_contrib/issues/1301

或是百度云网盘:链接:https://pan.baidu.com/s/1mB1tc2UplD4ZMeSXyuweIw 
提取码:k7y3

四、配置环境变量

1、配置opencv.pc

先解释一下 pkg-config 这个什么意思,有助于大家理解待会为什么这么去配置环境。

pkg-config 就是我们告诉程序编译时从哪里找头文件和库相关信息。

pkg-config 从哪儿知道这些信息的呢?

它是从包名为 xxx.pc 这个文件中查找到的。就比如上面两个测试,它是从 opencv.pc 里去找,但是问题是我编译完之后整台电脑都没有 opencv.pc 这个文件啊(不信你试试 sudo find / -name opencv.pc

那怎么办呢?没有枪没有炮我们自己造!

当然,这个造大炮的前提是在 步骤 3中没有勾选 OPENCV_GENERATE_PKGCONFIG。如果勾选了就跳过本 步骤。

新建一个 opecv.pc (勾选了就跳过此步骤,勾选生成的opencv4.pc 我印象中好像不用修改的,不放心可以打开看看确认一下 )

现在我们自己造一个 opencv.pc (下面的代码中一份是我自己复制的 opencv.pc,一份是官方的 opencv4.pc,大家可以自行选择(当然是官方的好),然后根据自己路径修改(下面会提怎么修改))

vim opencv.pc# 在里面输入以下内容# 这个是我不知道 OPENCV_GENERATE_PKGCONFIG 选项 的时候复制别人的
# ---------------------开始(这行不用复制)-------------------------
# Package Information for pkg-config
prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/libName: OpenCV
Description: Open Source Computer Vision Library
Version: 4.1.0
Cflags: -I${includedir}/opencv4 -I${includedir}/opencv4/opencv2
Libs: -L${exec_prefix}/lib -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_datasets -lopencv_dpm -lopencv_face -lopencv_fuzzy -lopencv_line_descriptor -lopencv_optflow -lopencv_video -lopencv_plot -lopencv_reg -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_rgbd -lopencv_surface_matching -lopencv_text -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_xobjdetect -lopencv_objdetect -lopencv_ml -lopencv_xphoto -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_photo -lopencv_imgproc -lopencv_core
# ---------------------结束(这行不用复制)-------------------------# 下面这个是我勾选 OPENCV_GENERATE_PKGCONFIG 生成的官方的 opencv4.pc
# ---------------------开始(这行不用复制)-------------------------
# Package Information for pkg-configprefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv4/opencv
includedir_new=${prefix}/include/opencv4Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.1.0
Libs: -L${exec_prefix}/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_video -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_old} -I${includedir_new}
# ---------------------结束(这行不用复制)-------------------------

要注意的是以下我圈住的 5 个框。

(1) prefix 这个是根据自己路径去设置的(/home/你的名字/你的路径),因为我安装在/usr/local ,看下图可以看到 /usr/local 是 include 和 lib 的上一级目录,所以路径写到这就好了。切忌写成 ~/这样的路径(血的教训)。

(2)includedir 就是包含的头文件目录

libdir 就是库的目录

(3)Version 这个是你自己安装opencv的版本

(4)Cflags 这个就起码精确到 opencv4 ,要不然以后写程序 可能要 #include<opencv4/opencv2/opencv.hpp>

(5)Libs: 精确到 lib 目录就好了

大家可以根据自己安装的路径去设置。

那么这个 opencv.pc 要放在哪里?

这就又要讲到 pkg-config,它默认会去/usr/lib/pkgconfig 里面找 opencv.pc 。当它在这里找不到 opencv.pc ,它就会到 PKG_CONFIG_PATH 所设置的环境变量去找,如果还没找到就会报错,比如上两个测试的报错。所以:

如果是 opencv4.pc 的就把下面提到的 opencv.pc 改为 opencv4.pc,当然你也可以重命名为 opencv.pc

方法一:移动 opencv.pc 到 /usr/lib/pkgconfig

方法二:把 opencv.pc 放在你想放的路径,然后

1. 打开 bash.bashrcsudo gedit /etc/bash.bashrc2. 在文件后添加PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/设为你的opencv.pc的路径export PKG_CONFIG_PATH3. 更新配置sudo updatedb

关于 pkg-config 更详细的的介绍 —> 参考 4.

2、配置库路径

安装成功后还需要设置opencv的环境变量。打开文件:

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

将以下内容添加到最后:

/usr/local/lib

接下来配置库:

sudo ldconfig

更改环境变量:

sudo gedit /etc/bash.bashrc

在文件后添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfigexport PKG_CONFIG_PATH

到此,安装和配置的整个过程都完成了!

五、测试

1、在终端运行命令:pkg-config --cflags --libs opencv 出现下面信息:

  1. licaibiao@ubuntu:~/test/OpenCV$ pkg-config --cflags --libs opencv

  2. -I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core

  3. licaibiao@ubuntu:~/test/OpenCV$

2、运行一个打开图片的程序。

(1)在任意位置,新建一个文件夹test。

(2)创建DisplayImage.cpp文件,并输入以下代码,保存。

#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/videoio.hpp"
#include <opencv2/highgui/highgui_c.h>using namespace cv;
int main( int argc, char** argv )
{Mat image;image = imread( argv[1], 1 );if( argc != 2 || !image.data ){printf( "No image data \n" );return -1;}namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );imshow( "Display Image", image );waitKey(0);return 0;
}

(3)用CMake编译:添加一个CMakeLists.txt 文件,内容如下,保存

project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )  

(4)在test文件夹中右键,打开终端,执行以下命令,生成执行文件 DisplayImage。(这里cmake后面一个点就够了,表示在当前目录下执行cmake操作)

    cmake .make

(5)选择一张图片,复制到test文件夹中,并且重命名为test.jpg

(6)在终端运行以下代码

./DisplayImage   test.jpg

如果以上步骤都安装和配置成功,可以显示出图片:

大功告成!

希望大家都所有收获,有所成就!

【安装教程】Ubuntu18.04中用CMake-gui安装OpenCV4.1.0和OpenCV_contrib-4.1.0(图文)相关推荐

  1. OpenMVS详细安装教程(ubuntu18.04)

    OpenMVS详细安装教程-ubuntu18.04 前言 一.安装第三方库 1.安装 Eigen3.4 2.安装Boost1.56版本以上 3.安装OpenCV2.4(或者更高版本) 4.安装CGAL ...

  2. linux下anaconda3安装教程,Ubuntu18.04 安装 Anaconda3的教程详解

    Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如 ...

  3. Ubuntu18.04下的PCL安装(摸爬滚打)

    目录 Ubuntu18.04下的PCL安装 1.先安装Qt5,X11,OpenGL 1)安装Qt5 2)安装x11 3)安装OpenGL 4)安装libglut-dev 2.安装VTK(直接把pcl依 ...

  4. 安装win10+ubuntu18.04双系统(用U盘启动)

    (本文纯经验之谈,技术和原理方面欠缺) 出于研究CUDA和OpenCV,现需要在Linux环境下进行学习和研究.那么有三种选择,一,Windows下安装VMware虚拟机,在虚拟机里面安装Ubuntu ...

  5. Ubuntu18.04对应的ROS安装步骤教程

    Ubuntu18.04对应的ROS安装教程 一.ROS配置 1 配置Ubuntu18.04 软件仓库 2 开始安装 3 测试 二.遇到的问题 1 ROS无法下载问题 2 sudo: rosdep: c ...

  6. Linux上安装QQ,ubuntu18.04安装QQ最新简易教程,一分钟安装QQlinux版。

    文章目录 O.环境 一.安装方法 三.源代码 四.参考资料 QQ Web停止运营了,QQ linux停更了.TX真是良心企业.那我们该如何在linux上跑QQ呢? 本文提供ubuntu18.04 (1 ...

  7. 安装好Ubuntu18.04之后要做的事!!大全、详细教程!

    安装Ubuntu18.04之后的要做的事: 1.更新源,使用软件更新器选择中国的服务器aliyun即可自动更新缓存,以及各种软件 之后每天更新, shell更新: sudo apt update su ...

  8. 20230311给Ubuntu18.04下的GTX1080M安装驱动

    20230311给Ubuntu18.04下的GTX1080M安装驱动 2023/3/11 12:50 2. 安装GTX1080驱动 安装 Nvidia 驱动 367.27 sudo add-apt-r ...

  9. rk3399上安装docker+ubuntu18.04+opencv+ tensorflowa

    客户要求在rk3399上安装docker,搜了很久资料有限,东平四凑,花了几天时间才搞定,分享下吧,给需要的人 1 docker 安装 本文档适合 rk3399debian 平台,其他平台若要使用,请 ...

  10. Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!!

    Ubuntu18.04.1 64位 安装ns2.35全过程--水逆选手必看!!高版本Ubuntu必看!! ...前言 Step1: 更新系统 Step2:安装ns2需要的几个包 Step3:下载安装包 ...

最新文章

  1. thinkphp_ajax分页实现_无需整理
  2. 如何使用Azure ML Studio开启机器学习
  3. ArcCore重构-Platform_Types.h实现辨析
  4. iOS 7 新版微信 URL 不支持跳转 App Store 的解决方案
  5. Python ord 函数 - Python零基础入门教程
  6. 子网ip和子网掩码不匹配_【详解】你知道什么是IP路由查找的“最长匹配原则”吗?...
  7. 时间记录html,jquery水平、垂直时间线记录jQuery Timelinr
  8. nginx root alias 文件路径配置
  9. gin mysql_golang+gin+mysql构建RESTful API
  10. 【struts2】继承ActionSupport类
  11. 海马模拟器linux,Droid4X Mac版-海马玩模拟器Mac版下载 V0.8.3Beta-PC6苹果网
  12. 5V转1.8V稳压芯片,3.7V转1.8V稳压芯片
  13. java 通配符 删除文件_jQuery removeClass通配符
  14. 刻在祁连山上的艺术二维码,真的太酷了11
  15. deprecate(反对) 关于依赖版本低的问题
  16. linux定时清理临时目录,tmp临时文件目录自动清理
  17. 【学习番外篇】Firefly ROC-RK3328-CC刷Ubuntu18.04+VNC
  18. PS生成动态的二维码
  19. Vue上传图片图片,img标签显示图片
  20. 版权概念小结(音乐方面)

热门文章

  1. 去掉图题注 空格_在Word 2010文档中为图表插入形如“图一,图二”的题注时,删除标签与编号之间自动出现的空格的最优操作方法是( )_学小易找答案...
  2. 35岁以后还能学软件测试吗?
  3. Elasticsearch(三)--Metric(指标)
  4. 网易高工手打:中高级前端必须注意的40条移动端H5坑位指南
  5. android服务常驻后台,[问答] Android应用中,如何保证服务常驻内存?
  6. 服务器硬盘故障数据恢复流程介绍
  7. 德语语法笔记——连词
  8. Error in file(file, “rt“) : cannot open the connection In addition: Warning message:In file(file, “
  9. 《机器学习实战》-04 朴素贝叶斯
  10. Python爬虫-某旅游网