Ubuntu 16.04 安装opencv的各种方法(含opencv contrib扩展包安装方法)

https://blog.csdn.net/ksws0292756/article/details/79511170

本文主要介绍安装opencv C++接口和python接口的几种方法。 首先介绍C++接口的,然后介绍Python接口的

C++接口安装

采用源码编译的安装方式,基本也就是这种方法了,首先在官网下载你想安装的版本的opencv压缩包,下载连接如下: 
https://github.com/opencv/opencv/releases

首先,安装一些依赖,根据自己的情况选择,如果不知道自己安装了那些依赖,就都输入一遍,如果已经安装系统会自动跳过,不会重复安装

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

然后,将压缩包解压,我下载我是opencv3.4.3版本,所以最后解压出来的文件夹就是opencv-3.4.3,接着,先用命令行进入该文件夹,然后执行命令,如下所示:

cd ~/opencv-3.4.3  # 进入opencv文件夹
mkdir build # 创建build文件夹
cd build # 进入build文件夹 #cmake指令,如果没有特殊要求建议就选择默认的就可以
#注意,后面的两个点千万不能省,代表了上级目录
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j7 # 多线程执行make任务 # 最后一步,安装库文件
sudo make install #安装完成

Python 接口安装

有以下几种方法。具体操作如下:

方法一(推荐):利用pip安装opencv-python

在安装之前,如果你之前安装过旧版本的opencv,那么就先将其删除,再进行下面的安装过程。 
在pip中可以方便快速的安装opencv-python和opencv-contrib-python,只需要输入两条指令即可:

$ pip install opencv-python #安装opencv
$ pip install opencv-contrib-python #安装opencv的contrib扩展包

常见问题:

  • opencv-python和opencv-contrib-python是否必须要同时安装? 
    答:不需要,他们分别可以独自运行,但是一般情况下,都会将两个包都装上
  • 报错显示pip找不到包? 
    答:这种请看多半是因为pip比较旧,这时只需要输入下面的指令更新以下pip就行了
$ pip install --upgrade pip
$ pip install wheel #如果确定已经安装了wheel就不用执行这条指令
  • 安装过程遇到错误提示? 
    答:确保你已经删除了旧版本的opencv python捆绑包

方法二:利用conda安装opencv

利用conda安装opencv,这种方法相较于pip安装方法来说,可以自由选择opencv的版本,使用面更广,但是缺点是不能安装opencv-contrib。具体操作如下: 
首先,可以查询一下conda里面可以安装的opencv:

conda search opencv

 
然后,根据你想要安装的opencv版本(以3.1.0为例),输入以下指令即可:

conda install opencv=3.1.0
  • 1

以上两种opencv的安装方法可以满足大部分人的基本需求,但是,如果你既想要自定义选择opencv的版本,又想要安装opencv-contrib扩展库,那么可以采用源码编译的方式安装,这也是opencv官方推荐的安装方式。

方法三:源码编译安装opencv和contrib

首先,更新以下系统:

$ sudo apt-get update
$ sudo apt-get upgrade

接着,安装需要的编译工具

$ sudo apt-get install build-essential cmake pkg-config

然后,安装相应的依赖包

$ sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libatlas-base-dev gfortran

然后在Github的opencv项目主页下载你需要的版本,注意contrib的版本和opencv的版本要一致。 
opencv源码下载地址: 
https://github.com/opencv/opencv/releases 
contrib源码下载地址: 
https://github.com/opencv/opencv_contrib/releases 

下载好opencv的源码压缩包以后,将其解压,然后,进入到opencv的文件夹中(这里我以opencv3.1.0为例): 
(注意,如果下面的指令报错,就将所有-D后面的空格删除)

$ cd ~/opencv-3.1.0/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \ #这里是opencv的安装路径,建议不要修改,就采用默认的安装路径即可
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
-D PYTHON_EXECUTABLE=~/.pyenv/bin/python \ #这是要用来编译的python路径
-D BUILD_EXAMPLES=ON .. # 我在编译例子时遇到错误,把它改为OFF通过

上边的参数配置中,有几处是需要根据你自己电脑上的路径来设置的:

  • CMAKE_INSTALL_PREFIX:opencv的安装路径,可以自己设置,但建议就用默认路径
  • OPENCV_EXTRA_MODULES_PATH:contrib文件夹的所在路径,取决于你刚刚下载的contrib压缩包解压后的文件位置
  • PYTHON_EXECUTABLE:用来进行编译的python路径,如果你不知道自己所有python的路径的话,可以利用指令which python来查询

完成cmake的配置后,利用make指令进行编译:

$ make

然后在进行安装

$ sudo make install
$ sudo ldconfig

最后,建立软连接

$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

Ubuntu 16.04 安装opencv的各种方法(含opencv contrib扩展包安装方法)的更多相关文章

  1. Ubuntu 16.04 + CUDA 8.0 + cuDNN v5.1 + TensorFlow(GPU support)安装配置详解

    随着图像识别和深度学习领域的迅猛发展,GPU时代即将来临.由于GPU处理深度学习算法的高效性,使得配置一台搭载有GPU的服务器变得尤为必要. 本文主要介绍在Ubuntu 16.04环境下如何配置Ten ...

  2. PHP7 学习笔记(一)Ubuntu 16.04 编译安装Nginx-1.10.3、 PHP7.0.9、Redis3.0 扩展、Phalcon3.1 扩展、Swoole1.9.8 扩展、ssh2扩展(全程编译安装)

    ==================== PHP 7.0 编译安装================== wget http://cn2.php.net/get/php-7.0.9.tar.bz2/fr ...

  3. EJBCA的安装(基于Ubuntu 16.04 LTS + wildfly8 + ejbca6.3.11 + jdk7)

    前一段时间折腾了一下PKI,用EJBCA在研究院内网搭建了一个CA,目前是提供给手机端(安卓和IOS)来和服务器端(nginx + Java应用)做安全连接的(客户端和服务器端双向认证) 由于EJBC ...

  4. Ubuntu 16.04 LTS安装Docker并使用加速器

    参考优酷:http://v.youku.com/v_show/id_XMTkxOTYwODcxNg==.html?spm=a2h0k.8191407.0.0&from=s1.8-1-1.2 首 ...

  5. Windows 7远程桌面连接Ubuntu 16.04

    转自:http://jingyan.baidu.com/article/8ebacdf0cdc64949f75cd555.html 从Windows 7远程到Windows系统比较简单,只要对方电脑开 ...

  6. Ubuntu 16.04 python和OpenCV安装

    Ubuntu 16.04 python和OpenCV安装:最进在做深度学习和计算机视觉的有关内容,因此要在python中用到opencv.我的电脑装的是Ubuntu 16.04,python 2.7和 ...

  7. ubuntu 16.04 安装 opencv +contrib (3.2.0) + python 3.5

    环境: - ubuntu 16.04 - OpenCV + contrib 3.2.0 (文中附下载链接) - Python 3.5 基于其他环境的配置应该大同小异. 没时间解释了,直接上车. 更新下 ...

  8. Ubuntu 16.04安装tensorflow_gpu的方法

    参考资料: Ubuntu 16.04安装tensorflow_gpu 1.9.0的方法 装Tensorflow,运行项目报错: module compiled against API version ...

  9. OpenCV - Linux(Ubuntu 16.04)中安装OpenCV + OpenCV_Contrib

    近两个月来接触了Linux系统,在老板的建议下翻了Ubuntu的牌子,我安装的版本是16.04,用习惯之后感觉蛮好的,比Windows要强.好啦,废话不说啦,下面开始说在Ubuntu中安装OpemCV ...

随机推荐

  1. UpdateLayeredWindow后,使用Gdi DrawText文字透明的解决办法

    来源:http://stackoverflow.com/questions/5309914/updatelayeredwindow-and-drawtext 要点就是在先在memDc DrawText ...

  2. Codeforces Round #446 (Div. 2) B. Wrath【模拟/贪心】

    B. Wrath time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  3. FZU-2267 The Bigger the Better(字符串,模拟)

     Problem 2267 The Bigger the Better Accept: 132    Submit: 935Time Limit: 1500 mSec    Memory Limit ...

  4. [Luogu1429]平面最近点对(加强版)

    题目大意: 平面最近点对. 思路: 分治. 首先将所有点排序 每次把当前区间分为两半,递归求解两个区间内部的情况,然后枚举区间两边的点. #include<cmath> #include& ...

  5. 十. 图形界面(GUI)设计4.面板

    面板有两种,一种是普通面板(JPanel),另一种是滚动面板(JScrollPane). JPanel 面板是一种通用容器,JPanel的作用是实现界面的层次结构,在它上面放入一些组件,也可以在上面绘 ...

  6. iOS UI、Xcode、调试、代码等常见问题总汇(持续更新中)

    以前比较懒,遇到问题解决了就完事了,有些问题再次遇到时忘记了当初是怎么解决的,又要查各种资料来解决.好记忆不如烂笔头,不管简单还是复杂都记一下吧,所以决定写一篇常见问题总结,方便以后查阅.现在有点忙, ...

  7. Visio对象插入Word后周围空白过大

    如图,空白很大,因为我在设计里选择纸张适应绘图,后发现直接复制粘贴到word就好了,没空白了.

  8. 【微信】微信小程序 调用this.setData报错this.setData is not a function;

    在调用方法过程中 报错如下: 代码如下: Page({ /** * 页面的初始数据 */ data: { userLocalInfo:'用户地址' }, /** * 返回swapping页面 */ b ...

  9. SQL SERVER 2012 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 (System.Data)

    标题: 连接到服务器------------------------------ 无法连接到 192.168.1.253. ------------------------------其他信息: 尝试 ...

  10. apache几种限制ip的方法

    参考文档来源:  http://jingyan.baidu.com/article/4b07be3c193d1648b380f3a9.html1.  禁止访问某些文件/目录增加Files选项来控制,比 ...