由Adrian Rosebrock于2018年5月28日
在此博客文章中,您将学习如何在Ubuntu 18.04上安装OpenCV。
过去,我编写了一些Ubuntu的安装指南:
Ubuntu 16.04:如何使用Python 2.7和Python 3.5+安装OpenCV
在Ubuntu上安装OpenCV 3.0和Python 2.7+
在Ubuntu上安装OpenCV 3.0和Python 3.4+
(… 如果您正在寻找macOS和Raspberry Pi安装指南,请务必查看 此页面)
Canonical的人们一直在努力工作。
在2018年4月26日,他们为社区发布了新的Ubuntu长期支持(LTS)版本:Ubuntu 18.04 LTS(Bionic Beaver)。
对Ubuntu 16.04 LTS的支持将一直持续到2021年4月,因此请放心使用- 您不必升级16.04 OS即可继续处理图像处理项目。
就是说,如果您想升级到Ubuntu 18.04并使用最新和最新的版本,我想您会对Ubuntu 18.04的新变化感到非常满意。
让我们开始工作,并使用Python 3绑定安装OpenCV。
要了解如何使用OpenCV支持Ubuntu 18.04系统,请继续阅读。
注意:虽然您在我的博客(非 -LTS)上看不到Ubuntu 17.10的特定指南,但是这些说明可能适用于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指针。
步骤#0:请放心-您将使用Python 3.6
让我们熟悉Ubuntu 18.04上的Python 3。
要在Ubuntu 18.04上运行Python 3,您必须调用 python3 明确地。
让我们看看系统上安装了哪个版本:
Ubuntu 18.04:如何安装OpenCV
$ python3-版本
Python 3.6。5
现在,让我们启动一个Python 3 shell来测试水域:
Ubuntu 18.04:如何安装OpenCV
$ python3
>>print(“ OpenCV + Ubuntu 18.04!” )
OpenCV的+ Ubuntu的18.04 !
>>exit()
这很容易,所以让我们继续在Ubuntu 18.04上安装OpenCV。
步骤#1:在Ubuntu 18.04上安装OpenCV依赖项
今天的所有步骤都将在终端/命令行中完成。在开始之前,请打开终端或通过SSH连接。
从那里,我们需要使用apt-get 软件包管理器刷新/升级预安装的软件包/库:
Ubuntu 18.04:如何安装OpenCV
$ sudo apt-get update
$ sudo apt-get upgrade
接着安装开发人员工具:
Ubuntu 18.04:如何安装OpenCV
$ sudo apt-get install build-essential cmake unzip pkg-config
您很可能已经拥有 pkg-config 已安装在Ubuntu 18.04上,但请确保将其包含在install命令中以确保完整性。
接下来,我们需要安装一些特定于OpenCV的先决条件。OpenCV是图像处理/计算机视觉库,因此它需要能够加载标准图像文件格式,例如JPEG,PNG,TIFF等。以下图像I / O包将允许OpenCV处理图像文件:
Ubuntu 18.04:如何安装OpenCV
$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
现在让我们尝试安装 libjasper-dev :
Ubuntu 18.04:如何安装OpenCV
$ sudo apt-get install libjasper-dev
如果您收到有关的错误 libjasper-dev 丢失,然后按照以下说明进行操作:
Ubuntu 18.04:如何安装OpenCV
sudo add-apt-repository “ deb http://security.ubuntu.com/ubuntu xenial-security主”
sudo apt update
sudo apt install libjasper1 libjasper-dev
否则(或一次 libjasper-dev 已安装),请继续。
接下来,让我们包括视频I / O包,因为我们经常在PyImageSearch博客上使用视频。您需要以下软件包,以便可以使用相机流并处理视频文件:
Ubuntu 18.04:如何安装OpenCV
$ 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:
Ubuntu 18.04:如何安装OpenCV
$ sudo apt-get install libgtk- 3 -dev
我总是建议使用以下两个库来优化各种OpenCV功能:
Ubuntu 18.04:如何安装OpenCV
$ sudo apt-get install libatlas-base-dev gfortran
最后,我们的最后一个要求是安装Python 3标头和库:
Ubuntu 18.04:如何安装OpenCV
$ sudo apt-get安装python3.6 -dev
步骤2:下载官方OpenCV来源
更新2018年12月20日:这些说明已更新为可与OpenCV 3.4.4一起使用。 这些说明也应继续与将来的OpenCV 3.x版本一起使用。
由于我们将继续在终端中工作,因此请使用以下命令下载官方的OpenCV版本: get :
Ubuntu 18.04:如何安装OpenCV
$ cd〜
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.4.zip
其次是 opencv_contrib 模块:
Ubuntu 18.04:如何安装OpenCV
$ 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回购?
contrib存储库包含诸如SIFT,SURF等算法。过去,这些实现已包含在OpenCV 2.4的默认安装中。但是,它们从OpenCV 3+开始就被迁移了。
contrib模块中包含正在积极开发的模块和/或已申请专利的模块(对于商业/工业用途并非免费)。SIFT和SURF属于此类。您可以在以下博客文章中了解有关此举背后的思考过程的更多信息:SIFT和SURF在OpenCV 3中的作用是什么?
重要提示:两者OpenCV的 和 opencv_contrib 版本必须相同。请注意,两个URL都指向3.4.4。在仍然使用本指南的情况下,可以随意安装其他版本-只需确保更新两个URL。
现在,让我们解压缩存档文件:
Ubuntu 18.04:如何安装OpenCV
$ unzip opencv.zip
$ unzip opencv_contrib.zip
图1:下载并解压缩后opencv和opencv_contrib,我们的家目录列表应类似于什么是显示在终端。
现在,让我们继续并重命名目录:
Ubuntu 18.04:如何安装OpenCV
$ mv opencv-3.4.4 opencv
$ mv opencv_contrib-3.4。4 opencv_contrib
步骤#3:配置Python 3环境
我们要配置Python 3开发环境的第一步是安装pip(Python软件包管理器)。
要安装pip,只需在终端中输入以下内容:
Ubuntu 18.04:如何安装OpenCV
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
利用虚拟环境进行Python开发
如果您熟悉我的博客并在其中安装指南,则以下语句可能使我听起来像是破记录,但无论如何我都会重复:
我 每天都使用virtualenv和virtualenvwrapper,除非您有非常特殊的原因,否则也应该使用。这两个Python软件包有助于为您的项目创建独立的Python环境。
最佳实践是使用虚拟环境。
为什么?
虚拟环境使您可以独立地处理项目,而不必浪费资源消耗,例如VM和Docker映像(我确实确实使用VirtualBox和Docker-都有它们的位置)。
例如,也许您有一个Python + OpenCV项目,它需要较旧版本的scikit-learn(v0.14),但您想为所有较新的项目继续使用最新版本的scikit-learn(0.19)。
使用虚拟环境,您可以分别处理这两个软件版本依赖性,而仅使用Python的系统安装是无法实现 的。
如果您想了解有关Python虚拟环境的更多信息,请参阅RealPython上的这篇文章, 或阅读PyImageSearch上的本博客文章的前半部分。
让我们继续安装 虚拟环境 和 虚拟环境包装器 现在:
Ubuntu 18.04:如何安装OpenCV
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf〜/ get-pip.py〜/ .cache / pip
要完成安装,我们需要更新我们的 〜/ .bashrc
文件。
使用终端文本编辑器,例如 vi/vim
或 nano
,将以下几行添加到您的 〜/ .bashrc
:
Ubuntu 18.04: How to install OpenCV
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
另外,您可以直接通过bash命令附加行:
Ubuntu 18.04: How to install OpenCV
$ 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
接下来,将 〜/ .bashrc
文件:
Ubuntu 18.04: How to install OpenCV
$ source ~/.bashrc
创建一个虚拟环境来保存OpenCV和其他软件包
好的,虽然这似乎需要很多工作,但我们可以为OpenCV创建Python 3虚拟环境:
Ubuntu 18.04: How to install OpenCV
$ mkvirtualenv cv -p python3
这行代码只是创建了一个名为Python 3的虚拟环境 简历 。您可以根据自己的喜好命名环境-我想让它们简短而优美,同时提供足够的信息,以便记住它们的用途。您可以根据需要在系统上拥有多个虚拟环境!
让我们使用workon命令来验证我们是否处于简历环境中:
Ubuntu 18.04: How to install OpenCV
$ workon cv
图2显示了终端的外观(假设您尚未更改任何bash提示设置):
在您的环境中安装NumPy
让我们将第一个软件包安装到环境中:NumPy。NumPy是使用Python和OpenCV的要求。我们只使用pip(而简历 Python虚拟环境处于活动状态):
Ubuntu 18.04: How to install OpenCV
$ pip install numpy
步骤#4:为Ubuntu 18.04配置和编译OpenCV
现在我们要搬家了。我们已经准备好编译和安装OpenCV。
不过,在开始之前,请确保我们处于简历虚拟环境中:
Ubuntu 18.04:如何安装OpenCV
$ workon简历
虚拟环境处于活动状态(您位于虚拟环境“内部”)非常重要,这就是我不断重申它的原因。如果你是 不是在简历 在进入下一步之前,将无法正确生成Python虚拟环境。
使用CMake配置OpenCV
让我们使用以下命令设置我们的OpenCV构建 cmake
:
Ubuntu 18.04: How to install 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 将被使用(注意 简历 在路径中,因为我们的虚拟环境名称是 简历 )。
我总是建议您滚动CMake输出并检查是否有任何异常。您不会在每个设置旁边看到“是”标记,这很正常。确保没有看到任何错误,否则编译可能会失败(警告是可以的)。
请花一点时间注意,图3中 在Ubuntu 18.04的CMake输出中仅显示“ Python 3”部分。这是设计使然,因为我们仅在支持Python 3的情况下编译OpenCV。
更新2018-12-20:此外,向上滚动约20行,并确保将“非自由算法”设置为“是”。
注意:如果您遇到与stdlib.h:没有这样的文件或目录 在任一 cmake 要么 使 在本教程的阶段,您还需要在CMake中包括以下选项: -D ENABLE_PRECOMPILED_HEADERS =关闭 。在这种情况下,我建议删除您的构建目录,重新创建它,然后重新运行cmake 包括上述选项。这将解决标准库 错误。
在Ubuntu 18.04上编译OpenCV
让我们使用以下命令编译OpenCV 使 。
根据处理器/内核的数量,您可以通过更改命令中的标志来减少编译时间。我的计算机有4个核心,因此我正在使用-j4 旗。您可以更新数字或完全取消标记:
Ubuntu 18.04:如何安装OpenCV
$ make -j4
此过程可能需要30分钟或更长时间,因此,如果可以的话,请散步。
如果编译阻塞并挂起,则可能是由于线程争用情况造成的。如果您遇到此问题,只需删除您的建立 目录,重新创建它,然后重新运行 cmake 和 使 。这次不包括旁边的标志使 。
安装和验证OpenCV
成功完成100%的编译后,您现在可以安装OpenCV:
Ubuntu 18.04:如何安装OpenCV
$ sudo make install
$ sudo ldconfig
为了验证安装,有时我想在终端中输入以下命令:
Ubuntu 18.04:如何安装OpenCV
$ pkg-config --modversion opencv
3.4.4
步骤#5:完成Python + OpenCV + Ubuntu 18.04安装
我们已经到达了比赛的最后一圈,请坚持下去。
更新2018年12月20日:以下路径已更新。早期版本的OpenCV将绑定安装在其他位置(/usr/local/lib/python3.6/site-packages
),因此请务必仔细查看以下路径。
实际操作中,这个路径下找不到,使用命令:
find / -name site-package
其他的查找文件方法参见:
此时,您的OpenCV的Python 3绑定应位于以下文件夹中:
Ubuntu 18.04:如何安装OpenCV
$ ls /usr/local/python/cv2/python-3.6
cv2.cpython-36m-x86_64-linux-gnu.so
实际上,参照上述操作,cv2.cpython-36m-x86_64-linux-gnu.so
这个是没有的,如果要找,使用命令:
sudo pip3 install opencv-python
是不是很魔幻???直接命令安装只为这个???我不懂
让我们将它们重命名为简单 cv2.so :
Ubuntu 18.04:如何安装OpenCV
$ cd ~/.virtualenvs/cv/lib/python3.6/site-packages/
$ ln -s /usr/local/python/cv2/python-3.6/cv2.so cv2.so
提示: 如果要同时安装OpenCV 3和OpenCV 4,则可以考虑将其命名,而不是将文件重命名为cv2.so。
cv2.opencv3.4.4.so` 然后在下一个子步骤中,将符号链接从该文件适当地 cv2.so 也一样
我们的最后一个子步骤是将我们的OpenCV符号链接 cv2.so 绑定到我们的 简历 虚拟环境:
Ubuntu 18.04:如何安装OpenCV
$ cd ~/.virtualenvs/cv/lib/python3.6/site-packages/
$ ln -s /usr/local/python/cv2/python-3.6/cv2.so cv2.so
步骤#6:在Ubuntu 18.04上测试您的OpenCV 3安装
比赛已经结束,但让我们确认我们在所有汽缸上都在射击。
为了验证我们的OpenCV + Ubuntu安装是否已完成,我想启动Python,导入OpenCV并查询版本(如果您还安装了多个OpenCV版本,这对于保持理智很有用):
Ubuntu 18.04:如何安装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的版本。
(可选)此时,您可以安全地删除主文件夹中的zip和目录:
Ubuntu 18.04:如何安装OpenCV
$ cd ~
$ rm opencv.zip opencv_contrib.zip
$ rm -rf opencv opencv_contrib
对安装进行故障排除(FAQ)
在本节中,我解决了在Ubuntu 18.04 LTS上使用Python 3安装OpenCV 3时出现的一些常见问题。
问: Ubuntu 18.04上的Python 2.7在哪里?
答: Python 3是默认设置,也是Ubuntu 18.04附带的功能。Python 2.7用户可以在步骤1的末尾手动安装Python 2.7 :
Ubuntu 18.04:如何安装OpenCV
$ sudo apt-get install python2.7 python2.7-dev
从那里开始,在步骤3中创建虚拟环境时 ,首先安装适用于Python 2.7的pip:
Ubuntu 18.04:如何安装OpenCV
$ sudo python2.7 get-pip.py
然后(同样在步骤#3中),当您创建虚拟环境时,只需使用相关的Python版本标志:
Ubuntu 18.04:如何安装OpenCV
$ mkvirtualenv cv -p python2.7
从那里一切都应该是相同的。
问:为什么我不能只是点子安装OpenCV?
答:有一些根据您的操作系统和体系结构上的OpenCV提供的PIP安装的版本。您可能会遇到的问题是,它们可能在没有各种优化,图像I / O支持,视频I / O支持以及opencv_contrib
支持。使用它们-使用它们需要您自担风险。本教程旨在为您提供 在Ubuntu 18.04上完整安装OpenCV的功能,同时使您可以完全控制编译。
问:执行时虚拟环境 mkvirtualenv or workon
,我遇到“找不到命令错误”。
答:有很多原因会导致您看到此错误消息,所有这些都来自 步骤3:
1.首先,请确保您已安装virtualenv
和 virtualenvwrapper
正确使用pip
包裹经理。通过运行验证pip freeze
,并确保您同时看到virtualenv
和 virtualenvwrapper
在已安装软件包的列表中。
2.你的 〜/ .bashrc
文件可能有错误。查看您的内容〜/ .bashrc 文件看正确 出口 和 资源 存在命令(请检查 步骤#3,了解应附加到的命令〜/ .bashrc )。
3.您可能忘记了 资源 你的 〜/ .bashrc
。确保您跑步 来源〜/ .bashrc
编辑后,以确保您可以访问 mkvirtualenv or workon
命令。
问:当我打开新终端,注销或重新启动Ubuntu系统时,无法执行虚拟环境 要么 从事于 命令。
答:请参阅 上一个问题的#2。
问: 当我尝试导入OpenCV时,遇到此消息:
Import Error: No module named cv2 .
答: 有 多种原因可能导致这种情况发生,但不幸的是,这很难诊断。我建议以下建议以帮助诊断和解决该错误:
1.确保你的 cv 使用以下命令激活虚拟环境workon cv
命令。如果此命令给您一个错误,请参阅此FAQ中的第一个问题。
2.尝试调查内容 网站包装 您的目录 简历 虚拟环境。你可以找到网站包装 目录在 〜/ .virtualenvs / cv / lib / python3.6 / site-packages /
取决于您的Python版本。确保(1)有一个cv2
。所以 文件在 网站包装 目录和(2)已正确符号链接到有效文件。
3.请务必检查 site-packages
(乃至 'dist-packages'
)目录,用于Python的系统安装 / usr / local / lib / python3.6 / site-packages /
。另外请检查/ usr / local / python / cv2
。理想情况下,您应该有一个cv2
。所以 文件放在这些位置之一。
4.作为最后的选择,请检查您的build/lib
OpenCV版本的目录。这里 应该是一个cv2.so 在那里归档(如果都 cmake 和 使 执行而没有错误)。如果cv2.so 文件存在,手动将其复制到两个系统中site-packages
以及 site-packages
目录 cv
虚拟环境。
OpenCV有什么可能?