Ubuntu 16.04: How to install OpenCV

参考:https://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/python

步骤# 1:安装opencv的依赖项linux

本教程中的大部分(实际上所有)步骤将经过使用您的终端来完成。 首先,打开命令行并更新apt-get软件包管理器以刷新和升级以及预先安装的软件包/库:git

 1 sudo apt-get update github

2 sudo apt-get upgrade  shell

接下来,让咱们安装一些开发者工具:bootstrap

 1 sudo apt-get install build-essential cmake pkg-config ubuntu

pkg-config软件包(很是有可能)已经安装在你的系统上,但为了以防万一,必定要将它包含在上面的apt-get命令中。 cmake程序用于自动配置咱们的OpenCV版本。vim

OpenCV是一个图像处理和计算机视觉库。 所以,OpenCV须要可以从磁盘加载各类图像文件格式,例如JPEG,PNG,TIFF等。为了从磁盘加载这些图像,OpenCV实际上调用了其余图像I / O库,它们实际上有助于加载和解码 处理。 咱们在下面安装必要的:浏览器

 1 sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev bash

好的,如今咱们有图书馆从磁盘加载图像 - 但视频呢? 使用如下命令来安装用于处理视频流和从相机访问帧的软件包:

 1 sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

2 sudo apt-get install libxvidcore-dev libx264-dev 

OpenCV经过一套很是有限的GUI工具提供开箱即用的功能。 这些GUI工具容许咱们在屏幕上显示图像(cv2.imshow),等待/记录按键(cv2.waitKey),跟踪鼠标事件(cv2.setMouseCallback)以及建立简单的GUI元素,如滑块和轨迹条。 一样,你不该该指望用OpenCV构建完整的GUI应用程序 - 这些只是简单的工具,可让你调试代码并构建很是简单的应用程序。

在内部,处理OpenCV GUI操做的模块的名称是highgui。 highgui模块依赖于GTK库,您应该使用如下命令安装它:

 1 sudo apt-get install libgtk-3-dev 

接下来,咱们安装用于优化OpenCV内部各类功能的库,例如矩阵操做:

 1 sudo apt-get install libatlas-base-dev gfortran 

咱们将经过为Python 2.7和Python 3.5安装Python开发头文件和库(这两种方式)来完成第1步:

 1 sudo apt-get install python2.7-dev python3.5-dev 

注意:若是你没有安装Python开发头文件和静态库,你将在步骤4中遇到问题,咱们运行cmake来配置咱们的版本。 若是没有安装这些头文件,那么cmake命令将没法自动肯定Python解释器和Python库的正确值。 简而言之,本节的输出将显示为“空白”,您将没法构建Python绑定。 当你到达第4步时,花时间比较你的命令输出到个人。

步骤#2:下载OpenCV源代码

在本文发布时,OpenCV的最新版本是3.1.0,咱们使用如下命令下载.zip并解压缩:

cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip

当新版本的OpenCV发布后,您能够检查官方OpenCV GitHub并经过更改.zip的版本号下载最新版本。

可是,咱们还没有完成下载源代码 - 咱们还须要opencv_contrib存储库:

 1 wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip

2 unzip opencv_contrib.zip 

为何咱们要麻烦的去下载contrib?

那么,咱们但愿OpenCV 3的完整安装可以访问诸如SIFT和SURF等功能(无双关语)。 在OpenCV 2.4中,SIFT和SURF被包含在OpenCV的默认安装中。 然而,随着OpenCV 3+的发布,这些软件包已被转移到contrib中,该软件包含(1)当前正在开发的模块或(2)标记为“非空闲”(即已得到专利)的模块。 您能够在此博客文章中了解有关SIFT / SURF重组背后缘由的更多信息。

注意:您可能须要在复制和粘贴过程当中使用“<=>”按钮扩展上述命令。 3.1.0.zip中的.zip可能会在较小的浏览器窗口中被截断。 为了方便,我已经包含了opencv归档文件的完整URL以及下面的opencv_contrib归档文件:

我也想提一下,你的opencv和opencv_contrib版本应该是同样的(在这种状况下,3.1.0)。若是版本号不匹配,则可能会很容易地遇到编译时错误(或更糟糕的是,运行时错误几乎没法调试

第3步:设置您的Python环境 - Python 2.7或Python 3

咱们如今准备开始为构建配置咱们的Python开发环境。 第一步是安装Python包管理器pip:

cd ~
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

我在每一篇我曾经作过的OpenCV + Python安装教程中都提到了这一点,但今天我会在这里再次提到它:我是virtualenv和virtualenvwrapper的忠实粉丝。 这些Python软件包容许您为每一个正在处理的项目建立单独的独立Python环境。

简而言之,使用这些软件包能够解决“Project X取决于版本1.x,但Project Y须要4.x困境。 使用Python虚拟环境的一个奇妙的反作用是你能够保持你的系统Python整洁,整洁而且没有混乱。

虽然你确定能够在没有Python虚拟环境的状况下使用Python绑定来安装OpenCV,可是我强烈建议你使用它们,由于其余PyImageSearch教程利用Python虚拟环境。 我也会假设你已经在本指南的其他部分安装了virtualenv和virtualenvwrapper。

若是您想要详细解释为何Python虚拟环境是最佳实践,那么您绝对应该在RealPython上阅读这篇优秀的博客文章。 我还提供了一些关于为何我我的更喜欢本教程前半部分的Python虚拟环境的评论。

再次,让我重申,Python社区的标准作法是利用某种虚拟环境,因此我建议你也这样作:

sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/get-pip.py ~/.cache/pip

一旦咱们安装了virtualenv和virtualenvwrapper,咱们须要更新咱们的〜/ .bashrc文件,在文件底部包含如下行:

# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

〜/ .bashrc文件只是一个shell脚本,只要你启动一个新的终端,Bash就会运行。 您一般使用此文件来设置各类配置。 在这种状况下,咱们设置了一个名为WORKON_HOME的环境变量,以指向Python虚拟环境所在的目录。 而后咱们从virtualenvwrapper加载任何须要的配置。

要更新你的〜/ .bashrc文件,只需使用标准的文本编辑器便可。 我会推荐使用nano,vim或emacs。 你也可使用图形编辑器,但若是你刚刚开始使用,nano多是最容易操做的。

更简单的解决方案是使用cat命令并彻底避免编辑器:

echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.bashrc
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc

在编辑〜/ .bashrc文件后,咱们须要从新加载更改:

source ~/.bashrc

注意:只需为咱们当前的shell会话调用一次.bashrc上的源代码。 任什么时候候咱们打开一个新的终端,.bashrc的内容将自动执行(包括咱们的更新)。

如今咱们已经安装了virtualenv和virtualenvwrapper,下一步是实际建立Python虚拟环境 - 咱们使用mkvirtualenv命令执行此操做。

可是在执行这个命令以前,你须要作出一个选择:你想使用Python 2.7仍是Python 3?

您选择的结果将决定您在如下部分中运行的命令。

建立你的Python虚拟环境

若是您决定使用Python 2.7,请使用如下命令建立Python 2.7虚拟环境:

mkvirtualenv cv -p python2

不然,请使用此命令建立一个Python 3虚拟环境:

 mkvirtualenv cv -p python3

不管您决定使用哪一种Python命令,最终结果都是咱们已经建立了一个名为cv(简称为“计算机视觉”)的Python虚拟环境。

不管你喜欢什么,你均可以命名这个虚拟环境(而且建立尽量多的Python虚拟环境),可是对于时间来讲,我会建议坚持使用cv名称,由于这是我将在整个剩余部分使用的教程。

验证您是否在“cv”虚拟环境中

若是你曾经重启过你的Ubuntu系统, 注销并从新登陆; 或者打开一个新的终端,您须要使用workon命令从新访问您的cv虚拟环境。 下面是一个workon命令的例子:

workon cv

要验证您是否在cv虚拟环境中,只需检查您的命令行 - 若是您在提示符以前看到文本(cv),则说明您处于cv虚拟环境中:

Figure 1: Make sure you see the "(cv)" text on your prompt, indicating that you are in the cv virtual environment.

 

Figure 1: Make sure you see the “(cv)” text on your prompt, indicating that you are in the cv virtual environment.

不然,若是您没有看到cv文本,那么您不在cv虚拟环境中:

Figure 2: If you do not see the "(cv)" text on your prompt, then you are not in the cv virtual environment and need to run the "workon" command to resolve this issue. 

Figure 2: If you do not see the “(cv)” text on your prompt, then you are not in the cv virtual environment and need to run the “workon” command to resolve this issue.

要访问cv虚拟环境,只需使用上述的workon命令。

将NumPy安装到您的Python虚拟环境中

编译OpenCV以前的最后一步是安装NumPy,一个用于数值处理的Python包。 要安装NumPy,请确保您处于cv虚拟环境中(不然NumPy将被安装到Python的系统版本而不是cv环境中)。 从那里执行如下命令:

pip install numpy

步骤#4:在Ubuntu 16.04上配置和编译OpenCV

在这一点上,咱们已经安装了全部必要的先决条件 - 咱们如今准备编译和OpenCV!

但在此以前,请检查您的提示(您应该看到前面的(cv)文本),而后仔细检查您是否在cv虚拟环境中,若是没有,请使用workon命令:

workon cv

确保您进入cv虚拟环境后,咱们可使用CMake来设置和配置咱们的版本:

cd ~/opencv-3.1.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
    -D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
    -D BUILD_EXAMPLES=ON ..

上述命令将目录更改成〜/ opencv-3.1.0,若是您一直关注本教程,那么您将下载并取消存档.zip文件。

注意:若是遇到与stdlib.h有关的错误:在本教程的cmake或make阶段中没有这样的文件或目录,您还须要在CMake中包含如下选项:-D ENABLE_PRECOMPILED_HEADERS = OFF。 在这种状况下,我会建议删除您的构建目录,从新建立它,而后使用上述选项从新运行CMake。 这将解决stdlib.h错误。 感谢Carter Cherry和Marcin在评论部分指出了这一点!

在这个目录中,咱们建立一个名为build的子目录并将其更改成它。 构建目录是实际编译将要发生的地方。

最后,咱们执行cmake来配置咱们的构建。

在咱们开始实际编译OpenCV以前,请确保您检查CMake的输出!

为此,向下滚动标题为Python 2和Python 3的部分。

若是您正在使用Python 2.7支持在Ubuntu 16.04上编译OpenCV,请确保Python 2部分包含解释器,库,numpy和包路径的有效路径。 你的输出应该相似于个人下面:

Figure 3: Ensuring that Python 2.7 will be used when compiling OpenCV 3 for Ubuntu 16.04.

Figure 3: Ensuring that Python 2.7 will be used when compiling OpenCV 3 for Ubuntu 16.04.

检查这个输出,你能够看到:

1.解释器指向cv虚拟环境中的Python 2.7二进制文件。

2.库指向Python 2.7库(咱们在步骤#1的最后一步安装)。

3.numpy值指向咱们在cv虚拟环境中的NumPy安装。

4.最后,packages路径指向lib / python2.7 / site-packages。 当与CMAKE_INSTALL_PREFIX结合使用时,这意味着在编译OpenCV以后,咱们会在/usr/local/lib/python2.7/site-packages/中找到咱们的cv2.so绑定。

一样,若是您使用Python 3支持编译OpenCV 16.04,则须要确保您的Python 3部分与下面的代码相似:

Figure 4: Validating that Python 3 will be used when compiling OpenCV 3 for Ubuntu 16.04.

Figure 4: Validating that Python 3 will be used when compiling OpenCV 3 for Ubuntu 16.04.

再次注意个人解释器,库,numpy和包路径是如何被正确设置的。

若是在这些可变路径中看不到cv虚拟环境,那几乎能够确定是由于在运行CMake以前,您不在cv虚拟环境中!

若是确实如此,只需调用workon cv访问cv虚拟环境,而后从新运行上述的CMake命令。

假设你的CMake命令没有任何错误退出,你如今能够编译OpenCV:

make -j4

-j开关控制编译OpenCV时要使用的进程数量 - 您须要将此值设置为机器上的处理器/内核数量。 就我而言,我有一个四核处理器,因此我设置了-j4。

使用多个进程可让OpenCV更快地编译; 然而,有些时候竞赛条件受到打击,编辑炸弹爆炸了。 虽然你真的不知道这是不是没有不少之前的经验编译OpenCV的状况下,若是你遇到了错误,个人第一个建议是运行make clean刷新构建,而后编译只使用一个单一的 核心:

make clean
make

下面你能够在Ubuntu 16.04上找到一个成功的OpenCV + Python编译的屏幕截图:

Figure 5: Successfully compiling OpenCV 3 for Ubuntu 16.04.

Figure 5: Successfully compiling OpenCV 3 for Ubuntu 16.04.

最后一步是在Ubuntu 16.04上实际安装OpenCV 3:

sudo make install
sudo ldconfig

第5步:完成OpenCV安装

你正在完成的路上,只需再走几步,你的Ubuntu 16.04系统将所有使用OpenCV 3进行设置。

For Python 2.7:

运行sudo make install以后,您的Python 2.7绑定OpenCV 3如今应该位于/usr/local/lib/python-2.7/site-packages/中。 您可使用ls命令来验证它:(为完,待续..............)

ls -l /usr/local/lib/python2.7/site-packages/
total 1972
-rw-r--r-- 1 root staff 2016608 Sep 15 09:11 cv2.so

注意:在某些状况下,您可能会发现OpenCV安装在/usr/local/lib/python2.7/dist-packages而不是/usr/local/lib/python2.7/site-packages(note dist-packages vs 网站包)。 若是您的cv2.so绑定不在site-packages目录中,请务必检查dist-pakages。

最后一步是将咱们的OpenCV cv2.so绑定连接到Python 2.7的cv虚拟环境中:

cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

 For Python 3.5:

运行sudo make install后,您的OpenCV + Python 3绑定应位于/usr/local/lib/python3.5/site-packages/中。 再次,您可使用ls命令验证这一点:

ls -l /usr/local/lib/python3.5/site-packages/
total 1972
-rw-r--r-- 1 root staff 2016816 Sep 13 17:24 cv2.cpython-35m-x86_64-linux-gnu.so

自OpenCV 3发布以来,我一直对这种行为感到困惑,但因为某种缘由,在编译OpenCV和Python 3支持时,输出cv2.so文件名是不一样的。 实际的文件名可能会有所不一样,但它应该相似于cv2.cpython-35m-x86_64-linux-gnu.so。

再次,我不知道为何发生这种状况,但这是一个很是简单的解决方案。 咱们所须要作的就是重命名文件:

cd /usr/local/lib/python3.5/site-packages/
sudo mv cv2.cpython-35m-x86_64-linux-gnu.so cv2.so

在将cv2.cpython-35m-x86_64-linux-gnu.so重命名为cv2.so以后,咱们能够将咱们的OpenCV绑定对接到Python 3.5的cv虚拟环境中:

cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so

步骤#6:测试你的OpenCV安装

恭喜,您如今已经在您的Ubuntu 16.04系统上安装了OpenCV 3!

验证您的安装是否正常运行:

1.打开一个新的终端。

2.执行workon命令来访问cv Python虚拟环境。

3.尝试导入Python + OpenCV绑定。

我已经演示了如何执行如下步骤:

cd ~
workon cv
python
Python 3.5.2 (default, Jul  5 2016, 12:43:10) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.1.0'
>>>

正如你所看到的,我能够将个人OpenCV绑定导入到个人Python 3.5 shell中。

下面是我使用本教程中概述的相同步骤并将OpenCV绑定导入Python 2.7外壳的屏幕截图:

Figure 6: Ensuring that I can successfully import my Python + OpenCV bindings on Ubuntu 16.04.

Figure 6: Ensuring that I can successfully import my Python + OpenCV bindings on Ubuntu 16.04.

所以,不管您决定使用哪一种Python版本,只需按照本教程中详述的步骤进行操做便可在Ubuntu 16.04系统上安装OpenCV + Python。

一旦安装了OpenCV,您能够删除opencv-3.1.0和opencv_contrib-3.1.0目录(及其关联的.zip文件):

cd ~
rm -rf opencv-3.1.0 opencv_contrib-3.1.0 opencv.zip opencv_contrib.zip

可是,运行这个命令时要当心! 你须要确保你已经在你的系统上正确安装了OpenCV,而后再沿着这些目录。 不然,您将须要从新启动整个编译过程!

接下来干什么?

恭喜!您如今在您的Ubuntu 16.04系统上安装了全新的OpenCV - 我肯定您只是想利用您的安装来构建一些出色的计算机视觉应用程序......

......但我也愿意打赌,你刚刚开始学习计算机视觉和OpenCV,并可能感到有点困惑和不知所措,从哪里开始。

就我我的而言,我是一个很好的学习榜样的粉丝,因此,一个好的第一步是得到一些乐趣,并阅读这篇博客文章,探讨图像/视频中的猫。本教程旨在很是实用,并演示如何(快速)构建Python + OpenCV应用程序以检测图像中是否存在猫。

若是你真的对提升计算机视觉技能感兴趣,你必定要看看个人书,实用Python和OpenCV +案例研究。个人书不只涵盖计算机视觉和图像处理的基础知识,还教你如何解决真实世界的计算机视觉问题,包括图像和视频流中的人脸检测,视频中的对象跟踪以及手写识别。

curious_about_cv

所以,让咱们在Ubuntu 16.04系统上安装全新的OpenCV 3,以便于使用 - 只需单击此处便可详细了解可以使用实用Python和OpenCV解决的实际项目。

相关文章
相关标签/搜索