Ubuntu1804安装OpenCV保姆级教程_翻译版

Ubuntu 18.04: How to install OpenCV - PyImageSearch

原文链接如上

有任何问题可以去原文下的问答区寻求答案

文章目录

  • Ubuntu 18.04:如何安装OpenCV
  • Step #0:适应——您将使用Python 3.6
  • Step #1:在Ubuntu 18.04上安装OpenCV依赖项
  • Step #2:下载官方OpenCV源代码
  • Step #3:配置Python 3环境
      • 使用虚拟环境进行Python开发
      • 创建一个支持OpenCV和其他软件包的虚拟环境
      • 在您的环境中安装NumPy
  • Step #4:为Ubuntu 18.04配置和编译OpenCV
      • 用CMake配置OpenCV
      • 在Ubuntu 18.04上编译OpenCV
      • 安装和验证OpenCV
  • Step #5:完成Python+ OpenCV + Ubuntu 18.04的安装
  • Step #6: 测试安装在Ubuntu 18.04上的opencv3
  • 安装故障排除(FAQ)
  • OpenCV能做什么?
  • 总结
  • 总结

在这篇博客中,你将学习如何在Ubuntu18.04上安装OpenCV

在过去我也为Ubuntu编写了一些指南

Ubuntu 16.04: How to install OpenCV with Python 2.7 and Python 3.5+

Install OpenCV 3.0 and Python 2.7+ on Ubuntu

Install OpenCV 3.0 and Python 3.4+ on Ubuntu

如果你在寻找在macOS和树莓派上的安装指南,请看这里

Canonical的员工一直在努力工作。

2018年4月26日,他们为社区发布了一个新的Ubuntu长期支持(LTS)版本:Ubuntu 18.04 LTS(Bionic Beaver)。

对Ubuntu 16.04 LTS的支持将持续到2021年4月,因此放心您不必升级16.04操作系统来继续您的图像处理项目。

也就是说,如果你想升级到Ubuntu 18.04并使用最新最好的版本,我想你会对Ubuntu 18.04的新变化非常满意。

让我们开始工作,用Python 3绑定安装OpenCV。

要学习如何使用OpenCV支持您的Ubuntu 18.04系统,请继续阅读。

注意: 虽然你在我的博客上没有看到Ubuntu 17.10的具体指南(非lts),但这些说明可能适用于17.10(你必须自行承担风险)。

Ubuntu 18.04:如何安装OpenCV

Ubuntu 18.04的一个主要变化是他们完全放弃了Python 2.7。

如果需要的话,您仍然可以安装Python 2.7,但是现在Python 3是操作系统的默认设置。

因此,本指南支持Python 3。如果您需要Python 2.7支持,请先阅读整个指南,然后浏览这篇博客底部的FAQ部分的第一个问题,以获得Python 2.7的一些提示。

Step #0:适应——您将使用Python 3.6

让我们熟悉一下Ubuntu 18.04上的Python 3。要在Ubuntu 18.04上运行python3,你必须显式地调用python3。让我们看看我们的系统安装的哪个版本。

$python3 --version
Python 3.6.8

现在让我们打开Python3 shell来尝试一下

$ python3
>> print("OpenCV + Ubuntu 18.04!")
OpenCV + Ubuntu 18.04!
>> quit()

这很简单,让我们继续在Ubuntu 18.04上安装OpenCV。

Step #1:在Ubuntu 18.04上安装OpenCV依赖项

今天的所有步骤都将在终端/命令行中完成。在开始之前,打开终端或通过SSH连接。

从那里,我们需要刷新/升级预装包/库与apt-get包管理器:

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

您很可能已经在Ubuntu 18.04上安装了pkg-config,但是为了保持完整,请确保在安装命令中包含它。

接下来,我们需要安装一些特定于OpenCV的先决条件。OpenCV是一个图像处理/计算机视觉库,因此它需要能够加载标准的图像文件格式,如JPEG, PNG, TIFF等。下面的图像I/O包将允许OpenCV处理图像文件

$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev

现在让我们尝试安装libjasper-dev

$ sudo apt-get install libjasper-dev

如果您收到一个关于libjasper-dev丢失的错误,请按以下说明操作:

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

若未报错(或者安装了libjasper-dev),请继续执行。

接下来,让我们include视频I/O包,因为我们经常在PyImageSearch博客上处理视频。您将需要以下软件包,以便您可以工作与您的相机流和处理视频文件:

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev

OpenCV的highgui模块依赖于GTK库进行GUI操作。highgui模块将允许您创建基本的gui来显示图像,处理按键/鼠标点击,以及创建滑块和跟踪条。高级GUI应该用TK、Wx或QT来构建。请参阅这篇博客文章,了解如何使用TK制作OpenCV GUI。

让我们安装GTK:

$ sudo apt-get install libgtk-3-dev

我一直推荐以下两个库来优化各种OpenCV函数:

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

最后,我们的最后一个要求是安装Python 3头和库:

$ sudo apt-get install python3.6-dev

Step #2:下载官方OpenCV源代码

更新2018-12-20:这些说明已经更新,可以使用OpenCV 3.4.4 这些说明应该在未来的opencv3.x中继续使用。

由于我们继续在终端上工作,让我们使用wget下载官方的OpenCV版本:

$ cd ~
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.4.zip

接下来是opencv_contrib模块

$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.4.zip

注意: 如果您的浏览器切断了完整的命令,可以使用上面工具栏中的“<>”按钮来展开代码块,或者复制并粘贴以下URL: https://github.com/opencv/opencv_contrib/archive/3.4.4.zip

所以,contrib repo是什么?

contrib存储库包含SIFT、SURF等算法。过去,这些实现都包含在OpenCV 2.4的默认安装中;但是,从opencv3 +开始,它们就被移走了。

正在积极开发的模块和/或已获得专利(不免费供商业/工业使用)的模块都包含在contrib模块中。SIFT和SURF属于这一类。你可以在下面的博客中了解更多关于这一举动背后的思考过程:在OpenCV3中SIFT和SURF去了哪里?

重要提示:opencvopencv_contrib版本必须相同。注意,两个url都指向3.4.4。在使用本指南的同时,您可以随意安装不同的版本——只要确保更新了两个url即可。

现在,让我们解压缩archives:

$ unzip opencv.zip
$ unzip opencv_contrib.zip

Ubuntu1804安装OpenCV保姆级教程_翻译版_第1张图片

fig 1 在解压缩完之后,home目录应该看起来像这样
.

现在让我们重命名目录

$ mv opencv-3.4.4 opencv
$ mv opencv_contrib-3.4.4 opencv_contrib

其实这里也可以直接从opencv的github clone下来

Step #3:配置Python 3环境

配置Python 3开发环境的第一步是安装pip,一个Python包管理器。

要安装pip,只需在终端中输入以下内容:

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py

使用虚拟环境进行Python开发

如果你熟悉我的博客以及其中的安装指南,下面的声明可能会让我听起来像陈词滥调(broken record),但我还是要重复它:

我每天都使用virtualenv和virtualenvwrapper,除非你有非常特殊的理由,否则你也应该这样做。这两个Python包有助于为项目创建独立的Python环境。

使用虚拟环境是最好的方式。

为什么?

虚拟环境允许你独立地工作在你的项目上,而不需要启动像VMs和Docker镜像这样的资源占用器(我确实使用了VirtualBox和Docker—它们有自己的位置)。

例如,可能您有一个Python + OpenCV项目,该项目需要较老版本的scikit-learn (v0.14),但您希望对所有更新的项目都使用最新版本的scikit-learn(0.19)。

使用虚拟环境,您可以分别处理这两种软件版本的依赖关系,而仅使用Python的系统安装是不可能做到这一点的。

如果您想了解更多关于Python虚拟环境的信息,请参阅RealPython上的这篇文章,或者阅读PyImageSearch上这篇博客文章的前半部分。

让我们继续安装virtualenvvirtualenvwrapper:

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

要完成安装,我们需要更新~/.bashrc文件。

使用终端文本编辑器,如vi/vimnano,添加以下行到您的~/.bashrc:

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

或者,您可以通过bash命令直接追加行:

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

接下来 source~/.bashrc文件

$ source ~/.bashrc

创建一个支持OpenCV和其他软件包的虚拟环境

好的,虽然这看起来似乎有很多工作,但我们现在可以为OpenCV创建您的Python 3虚拟环境:

$ mkvirtualenv cv -p python3

这行代码简单地创建了一个名为cv的Python 3虚拟环境。你可以给你的环境起任何你想要的名字——我想让它们简短明了,同时提供足够的信息,这样我就能记住它们的作用了。系统上可以有任意多的虚拟环境!

让我们使用workon命令来验证我们是在cv环境中:

$ workon cv

fig 2 显示终端的样子(假设你没有改变任何bash提示设置):

Ubuntu1804安装OpenCV保姆级教程_翻译版_第2张图片

fig 2: 如果您在bash提示符的开头看到(cv),那么您的虚拟环境是活动的,并且您正在该环境的“内部”工作。您现在可以使用正确的Python绑定安全地安装OpenCV了。

在您的环境中安装NumPy

让我们将第一个包安装到环境中:NumPy。NumPy是使用Python和OpenCV所必需的。我们只使用pip(当cvPython虚拟环境被激活时):

$ pip install numpy

Step #4:为Ubuntu 18.04配置和编译OpenCV

现在我们继续。我们准备编译和安装OpenCV。

在我们开始之前,让我们确保我们是在cv虚拟环境中:

$ workon cv

这是非常重要的,虚拟环境被激活的(你是“在”虚拟环境),这就是为什么我一直重申它。如果您在继续下一步之前没有在cv Python虚拟环境中,那么构建文件将不能正确生成。

用CMake配置OpenCV

让我们使用cmake设置OpenCV构建:

$ cd ~/opencv
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D WITH_CUDA=OFF \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D BUILD_EXAMPLES=ON ..

更新2018-12-20: 确保设置了OPENCV_ENABLE_NONFREE=ON标志,这样您就可以访问我们有时在这个博客上评论的专利算法(并在PyImageSearch Gurus中深入介绍)。同样,确保更新虚拟环境的路径,以便使用正确的PYTHON_EXECUTABLE(注意路径中的cv,因为我们的虚拟环境名是cv)。

我总是建议您滚动查看CMake的所有输出,检查是否有任何异常。你不会看到每一个设置都标记着“YES”-这是正常的。确保你没有看到任何错误或者您的编译可能失败(warning是ok的)

Ubuntu1804安装OpenCV保姆级教程_翻译版_第3张图片

fig 3 :为了在ubuntu18.04编译OpenCV,我们使用CMake。CMake工具将在编译之前配置设置。

请注意,图3中Ubuntu 18.04的CMake输出中只显示了“Python 3”部分。这是由于我们只编译支持Python3的OpenCV而设计的。

更新2018-12-20: 另外,向上滚动20行,确保 “Non-free algorithms” 设置为 “YES”

注意: 如果您遇到stdlib.h: No such file or directory相关问题,在本教程的cmakemake阶段,您还需要在Cmake包括以下选项: -D ENABLE_PRECOMPILED_HEADERS=OFF。在这种情况下,我建议删除构建目录,重新创建它,然后使用上面的选项重新运行cmake。这将解决stdlib.h错误。

在Ubuntu 18.04上编译OpenCV

让我们使用make编译OpenCV。

根据处理器/内核的数量,可以通过更改命令中的标志来减少编译时间。我的计算机有4个核,所以我使用-j4标志。您可以更改数字或不用这个标志:

$ make -j4

Ubuntu1804安装OpenCV保姆级教程_翻译版_第4张图片

fig 4: 为了在Ubuntu 18.04上用Python 3编译OpenCV,我们使用make。
使用make从源代码编译OpenCV,安装OpenCV时最好使用包管理器。

这个过程可能需要30分钟或更长的时间,所以如果有可能的话,出去散散步。

如果您的编译阻塞和挂起,这可能是由于线程竞争条件。如果您遇到这个问题,只需删除build目录,重新创建它,并重新运行cmakemake。这一次不包括make后的flag。

安装和验证OpenCV

在成功,100%完成编译后,你现在可以安装OpenCV:

$ sudo make install
$ sudo ldconfig

为了验证安装,我有时会在终端上输入以下命令:

$ pkg-config --modversion opencv
3.4.4

Step #5:完成Python+ OpenCV + Ubuntu 18.04的安装

我们已经跑到了比赛的最后一圈,所以要坚持下去。

更新2018-12-20: 以下路径已经更新。以前版本的OpenCV将绑定安装在不同的位置(/usr/local/lib/python3.6/site-packages),所以一定要仔细查看下面的路径。

此时,你的Python 3 OpenCV绑定应该位于以下文件夹中:

$ ls /usr/local/python/cv2/python-3.6
cv2.cpython-36m-x86_64-linux-gnu.so

让我们重命名为简单的cv2.so

$ cd /usr/local/python/cv2/python-3.6
$ sudo mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so

专业提示: 如果你同时安装opencv3和opencv4,而不是将文件重命名为cv2。因此,您可以考虑将其命名为cv2.opencv3.4.4.so。然后在下一个子步骤中适当地从该文件链接到cv2。所以。

最后一个子步骤是对OpenCV cv2进行符号链接。绑定到我们的cv虚拟环境:

$ cd ~/.virtualenvs/cv/lib/python3.6/site-packages/
$ ln -s /usr/local/python/cv2/python-3.6/cv2.so cv2.so

Step #6: 测试安装在Ubuntu 18.04上的opencv3

比赛结束了,但让我们验证一下是否所有气缸都启动了(火力全开)。

为了验证我们的OpenCV + Ubuntu安装完成了,我喜欢启动Python,导入OpenCV,然后查询版本(如果你安装了多个版本的OpenCV,这很有用):

$ cd ~
$ workon cv
$ python
Python 3.6.5 (default, Apr 1 2018, 05:46:30)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.4.4'
>>> quit()

我的系统是这样的:

Ubuntu1804安装OpenCV保姆级教程_翻译版_第5张图片

fig 5 :为了验证OpenCV在python3虚拟环境中正确安装和配置,
我喜欢在终端中运行Python解释器。
从这里您可以导入OpenCV (cv2)并验证版本号是否与您想要安装的版本匹配。

更新2018-12-20: 我今天更新时没有更新截图。版本应该反映您安装的OpenCV的版本。

可选的,在这一点上,你可以安全地删除压缩文件和目录在你的主文件夹:

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

安装故障排除(FAQ)

在本节中,我将介绍一些常见的问题,以及在Ubuntu 18.04 LTS上用Python 3安装OpenCV 3时出现的问题。

Q: 在Ubuntu 18.04上Python 2.7在哪里?

A: Python 3是Ubuntu 18.04的默认版本。用户可以在Step#1的最后手动安装Python 2.7:

$ sudo apt-get install python2.7 python2.7-dev

然后,在步骤3中创建虚拟环境时,首先为Python 2.7安装pip:

$ sudo python2.7 get-pip.py

然后,一切的步骤都应该是一样的。

Q: 为什么我不能通过pip来安装OpenCV?

A: 根据您的操作系统和架构,有许多可用的可安装pip的OpenCV版本。您可能会遇到的问题是,它们可能在编译时没有各种优化、图像I/O支持、视频I/O支持和opencv_contrib支持。使用它们——但使用它们的风险由你自己承担。本教程的目的是让你在Ubuntu 18.04上完整安装OpenCV,同时让你完全控制编译过程。

Q: 当我执行mkvirtualenvworkon时,我遇到一个“command not found error”。

A: 你会看到这个错误信息的原因有很多,都来自于Step #3:

Q: 当我尝试导入OpenCV时,我遇到这样的消息:

Import Error: No module named cv2

A: 发生这种情况有多种原因,不幸的是,很难诊断。我建议以下建议来帮助诊断和解决错误:

  1. 使用workon cv命令确保您的cv虚拟环境处于活动状态。如果这个命令给你一个error,去看在这个FAQ的第一个问题。

  2. 尝试在您的cv虚拟环境中审查site-packages目录的内容。根据您的Python版本,您可以在~/.virtualenvs/cv/lib/python3.6/site-packages/中找到site-packages目录。确保(1)在site-packages中有一个cv2.so(2)它被正确地符号链接到一个有效的文件。

  3. 一定要检查位于/usr/local/lib/python3.6/site-packages/中的Python系统安装的site-packages(甚至是dist-packages)目录。另外,请检查/usr/local/python/cv2。理想情况下,您应该有一个cv2.so文件在其中一个位置。

  4. 最后的手段,检查OpenCV构建的build/lib目录。应该有一个cv2.so,文件在那里(如果cmakemake都执行没有错误的话)。如果cv2.so存在,将文件手动复制到系统的site-packages目录和cv虚拟环境的site-packages目录中。

OpenCV能做什么?

OpenCV的可能性是无限的。

也许你对追踪物体的运动感兴趣:

fig 6: 我们可以使用OpenCV实时追踪物体的移动

或者你想使用OpenCV +深度学习来检测图像/视频中的人脸?相信我,这比听起来容易!

fig 7: 使用OpenCV实时检测人脸比听起来容易多了

或者你正在寻找一本入门级的书,专为计算机视觉领域的新手设计的?

如果是这样,看看我的书, Practical Python and OpenCV + Case Studies.

Ubuntu1804安装OpenCV保姆级教程_翻译版_第6张图片

fig 8:这是一本为初学者准备的书,但它也对那些想要巩固他们的基础知识的人有用。一定要读一下!

在这本书里,你会:

  • 掌握计算机视觉和图像处理的基础知识,以有趣、动手的方式授课。

  • 通过实践来学习,包括可视化的示例大量的代码(包括逐行检查,确保您确切地理解正在进行的操作)。

  • 实现案例研究,包括人脸检测,目标跟踪,笔迹识别,等等!

要了解更多关于这本书(以及它如何帮助你学习计算机视觉+ OpenCV),只需点击这里!

总结

今天我们在Ubuntu 18.04 LTS上安装了带有Python 3绑定的OpenCV3。

我希望这些说明对您使用OpenCV3配置自己的Ubuntu 18.04机器有帮助。

如果你对学习更多关于OpenCV,计算机视觉和图像处理感兴趣,请务必在下面的表单中输入你的电子邮件地址,当新的博客文章和教程发布时,将会得到通知!

准备的书,但它也对那些想要巩固他们的基础知识的人有用。一定要读一下!

在这本书里,你会:

  • 掌握计算机视觉和图像处理的基础知识,以有趣、动手的方式授课。

  • 通过实践来学习,包括可视化的示例大量的代码(包括逐行检查,确保您确切地理解正在进行的操作)。

  • 实现案例研究,包括人脸检测,目标跟踪,笔迹识别,等等!

要了解更多关于这本书(以及它如何帮助你学习计算机视觉+ OpenCV),只需点击这里!

总结

今天我们在Ubuntu 18.04 LTS上安装了带有Python 3绑定的OpenCV3。

我希望这些说明对您使用OpenCV3配置自己的Ubuntu 18.04机器有帮助。

如果你对学习更多关于OpenCV,计算机视觉和图像处理感兴趣,请务必在下面的表单中输入你的电子邮件地址,当新的博客文章和教程发布时,将会得到通知!

你可能感兴趣的:(Linux,CV,linux,ubuntu,python)