Ubuntu 18.04: How to install OpenCV - PyImageSearch
原文链接如上
有任何问题可以去原文下的问答区寻求答案
在过去我也为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的一个主要变化是他们完全放弃了Python 2.7。
如果需要的话,您仍然可以安装Python 2.7,但是现在Python 3是操作系统的默认设置。
因此,本指南支持Python 3。如果您需要Python 2.7支持,请先阅读整个指南,然后浏览这篇博客底部的FAQ部分的第一个问题,以获得Python 2.7的一些提示。
让我们熟悉一下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。
今天的所有步骤都将在终端/命令行中完成。在开始之前,打开终端或通过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
更新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去了哪里?
重要提示:opencv
和opencv_contrib
版本必须相同。注意,两个url都指向3.4.4。在使用本指南的同时,您可以随意安装不同的版本——只要确保更新了两个url即可。
现在,让我们解压缩archives:
$ unzip opencv.zip
$ unzip opencv_contrib.zip
现在让我们重命名目录
$ mv opencv-3.4.4 opencv
$ mv opencv_contrib-3.4.4 opencv_contrib
其实这里也可以直接从opencv的github clone下来
配置Python 3开发环境的第一步是安装pip,一个Python包管理器。
要安装pip,只需在终端中输入以下内容:
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
如果你熟悉我的博客以及其中的安装指南,下面的声明可能会让我听起来像陈词滥调(broken record),但我还是要重复它:
我每天都使用virtualenv和virtualenvwrapper,除非你有非常特殊的理由,否则你也应该这样做。这两个Python包有助于为项目创建独立的Python环境。
使用虚拟环境是最好的方式。
为什么?
虚拟环境允许你独立地工作在你的项目上,而不需要启动像VMs和Docker镜像这样的资源占用器(我确实使用了VirtualBox和Docker—它们有自己的位置)。
例如,可能您有一个Python + OpenCV项目,该项目需要较老版本的scikit-learn (v0.14),但您希望对所有更新的项目都使用最新版本的scikit-learn(0.19)。
使用虚拟环境,您可以分别处理这两种软件版本的依赖关系,而仅使用Python的系统安装是不可能做到这一点的。
如果您想了解更多关于Python虚拟环境的信息,请参阅RealPython上的这篇文章,或者阅读PyImageSearch上这篇博客文章的前半部分。
让我们继续安装virtualenv
和virtualenvwrapper
:
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~/get-pip.py ~/.cache/pip
要完成安装,我们需要更新~/.bashrc
文件。
使用终端文本编辑器,如vi
/vim
或nano
,添加以下行到您的~/.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创建您的Python 3虚拟环境:
$ mkvirtualenv cv -p python3
这行代码简单地创建了一个名为cv
的Python 3虚拟环境。你可以给你的环境起任何你想要的名字——我想让它们简短明了,同时提供足够的信息,这样我就能记住它们的作用了。系统上可以有任意多的虚拟环境!
让我们使用workon命令来验证我们是在cv环境中:
$ workon cv
fig 2 显示终端的样子(假设你没有改变任何bash提示设置):
让我们将第一个包安装到环境中:NumPy。NumPy是使用Python和OpenCV所必需的。我们只使用pip(当cv
Python虚拟环境被激活时):
$ pip install numpy
现在我们继续。我们准备编译和安装OpenCV。
在我们开始之前,让我们确保我们是在cv虚拟环境中:
$ workon cv
这是非常重要的,虚拟环境被激活的(你是“在”虚拟环境),这就是为什么我一直重申它。如果您在继续下一步之前没有在cv
Python虚拟环境中,那么构建文件将不能正确生成。
让我们使用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的)
请注意,图3中Ubuntu 18.04的CMake输出中只显示了“Python 3”部分。这是由于我们只编译支持Python3的OpenCV而设计的。
更新2018-12-20: 另外,向上滚动20行,确保 “Non-free algorithms” 设置为 “YES”
注意: 如果您遇到stdlib.h: No such file or directory
相关问题,在本教程的cmake
或make
阶段,您还需要在Cmake包括以下选项: -D ENABLE_PRECOMPILED_HEADERS=OFF
。在这种情况下,我建议删除构建目录,重新创建它,然后使用上面的选项重新运行cmake。这将解决stdlib.h
错误。
让我们使用make
编译OpenCV。
根据处理器/内核的数量,可以通过更改命令中的标志来减少编译时间。我的计算机有4个核,所以我使用-j4
标志。您可以更改数字或不用这个标志:
$ make -j4
这个过程可能需要30分钟或更长的时间,所以如果有可能的话,出去散散步。
如果您的编译阻塞和挂起,这可能是由于线程竞争条件。如果您遇到这个问题,只需删除build
目录,重新创建它,并重新运行cmake
和make
。这一次不包括make
后的flag。
在成功,100%完成编译后,你现在可以安装OpenCV:
$ sudo make install
$ sudo ldconfig
为了验证安装,我有时会在终端上输入以下命令:
$ pkg-config --modversion opencv
3.4.4
我们已经跑到了比赛的最后一圈,所以要坚持下去。
更新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
比赛结束了,但让我们验证一下是否所有气缸都启动了(火力全开)。
为了验证我们的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()
我的系统是这样的:
更新2018-12-20: 我今天更新时没有更新截图。版本应该反映您安装的OpenCV的版本。
可选的,在这一点上,你可以安全地删除压缩文件和目录在你的主文件夹:
$ cd ~
$ rm opencv.zip opencv_contrib.zip
$ rm -rf opencv opencv_contrib
在本节中,我将介绍一些常见的问题,以及在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: 当我执行mkvirtualenv
或workon
时,我遇到一个“command not found error”。
A: 你会看到这个错误信息的原因有很多,都来自于Step #3:
Q: 当我尝试导入OpenCV时,我遇到这样的消息:
Import Error: No module named cv2
A: 发生这种情况有多种原因,不幸的是,很难诊断。我建议以下建议来帮助诊断和解决错误:
使用workon cv
命令确保您的cv
虚拟环境处于活动状态。如果这个命令给你一个error,去看在这个FAQ的第一个问题。
尝试在您的cv
虚拟环境中审查site-packages
目录的内容。根据您的Python版本,您可以在~/.virtualenvs/cv/lib/python3.6/site-packages/
中找到site-packages
目录。确保(1)在site-packages
中有一个cv2.so
(2)它被正确地符号链接到一个有效的文件。
一定要检查位于/usr/local/lib/python3.6/site-packages/
中的Python系统安装的site-packages
(甚至是dist-packages
)目录。另外,请检查/usr/local/python/cv2
。理想情况下,您应该有一个cv2.so
文件在其中一个位置。
最后的手段,检查OpenCV构建的build/lib
目录。应该有一个cv2.so
,文件在那里(如果cmake
和make
都执行没有错误的话)。如果cv2.so
存在,将文件手动复制到系统的site-packages
目录和cv虚拟环境的site-packages
目录中。
OpenCV的可能性是无限的。
也许你对追踪物体的运动感兴趣:
或者你想使用OpenCV +深度学习来检测图像/视频中的人脸?相信我,这比听起来容易!
或者你正在寻找一本入门级的书,专为计算机视觉领域的新手设计的?
如果是这样,看看我的书, Practical Python and OpenCV + Case Studies.
在这本书里,你会:
掌握计算机视觉和图像处理的基础知识,以有趣、动手的方式授课。
通过实践来学习,包括可视化的示例和大量的代码(包括逐行检查,确保您确切地理解正在进行的操作)。
实现案例研究,包括人脸检测,目标跟踪,笔迹识别,等等!
要了解更多关于这本书(以及它如何帮助你学习计算机视觉+ 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,计算机视觉和图像处理感兴趣,请务必在下面的表单中输入你的电子邮件地址,当新的博客文章和教程发布时,将会得到通知!