本教程提供一步一步的指南来在您的 Mac OS 机器上安装OpenCV 4(带有Python捆绑)。
OpenCV 4尚未正式发布,预计在2018秋季发布。同时,您可以使用Github上的预发布,从Mac OS系统的源上编译和安装OpenCV 4。
一旦OpenCV 4正式发布,我也将更新这些安装说明。
要了解如何在MaCOS上安装OpenCV 4,请继续阅读。
在Mac OS上安装OpenCV 4
在这篇博客文章中,我们将在Mac OS上安装OpenCV 4。OpenCV 4充满了新的特性,其中很多都是深度学习的重点。
注意:如果您的安装教程出现错误(也许您想在Ubuntu或Raspberry Pi上安装OpenCV),那么您应该访问我的OpenCV安装指南页面。我发布链接到我的所有OpenCV安装教程。
首先,我们将安装Xcode并设置自制程序,在那里我们将建立Python虚拟环境。
然后我们将从源代码编译OpenCV 4。从源编译允许我们完全控制编译和构建以及安装完整的OpenCV 4构建。我将在以后的安装指南中讨论其他方法(pip和Homebrew)(在正式发布OpenCV 4之前,这些方法都不能覆盖)。
最后,我们将测试我们的OpenCV 4安装,让我们的尝试一个真正的OpenCV项目。
我们开始吧!
第1步:安装Xcode
首先,我们需要安装Xcode。
要安装XCODE,启动苹果应用程序商店,找到XCODE应用程序并安装。你需要耐心等待,如图所示:
图1:Xcode是依赖于自制程序,因此是Mac OS上的OpenCV 4。要安装Xcode,先启动App Store,找到Xcode,并运行安装。
在安装Xcode之后,我们需要接受许可协议。启动终端并输入以下命令:
要接受许可证,只需向下滚动并接受它。
一旦您接受了许可协议,我们就安装苹果命令行工具。这是必需的,这样你就可以有等等。你可以通过以下方式安装工具:
图2:在Mac OS上安装苹果命令行工具
点击“安装”按钮,等待大约5分钟的安装完成。
步骤2:安装自制程序
对于这一步,我们将安装 Mac 社区软件包管理器,Homebrew。
Homebrew在Ruby上运行,Ruby是一种流行的程序设计语言。准备好后,复制下面的整个命令来安装Homebrew:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
注意:在复制和粘贴之前,请确保在上面的代码块中使用<= >按钮来扩展代码块。如果不展开代码块,您可能最终复制了命令的粘贴部分,这最终会导致安装Homebrew的错误。
Homebrew命令被缩短为。
让我们更新自制程序定义:
$ brew update
现在让我们编辑我们的Mac的bash配置文件。每次启动终端时都会运行此脚本。为了简单起见,我建议使用nano文本编辑器。如果你更喜欢vim或emacs,那也没关系。
用nano使用以下命令编辑您的bash配置文件:
$ nano ~/.bash_profile
一旦您正在积极编辑文件,追加下面的行到最后以更新您的:
# Homebrew
export PATH=/usr/local/bin:$PATH
然后,保存配置文件。如果你使用Nano,你会看到窗口底部的快捷键,演示如何保存(写入)和退出。
一旦你回到bash,你的bash简介来源:
$ source ~/.bash_profile
是一个值得你去学着喜欢的工具,所有的
都是从命令行下载文件。我们可以使用Homebrew安装
:
$ brew install wget
现在让我们安装Python3:
$ brew install python3
要验证您的Python3安装,请使用:
$ which python3
/usr/local/bin/python3
如果你看到,你正在使用Homebrew Python(这就是我们想要的)。如果你看到
,那么你正在使用系统Python,你可能需要修复你的BASH配置文件和/或源代码。
现在花时间验证你正在使用Python是Homebrew版本,而不是系统版本。
第3步:为OpenCV 4安装Python依赖项
我们将在这个步骤中为OpenCV 4安装Python依赖项。
利用我们刚刚安装的工具,让我们下载并安装pip(一种Python 软件包管理器):
在Mac OS上安装OpenCV 4
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
现在我们已经安装了pip,我们可以安装virtualenv 和 virtualenvwrapper, ,这两个工具用于管理虚拟环境。Python虚拟环境是Python开发的最佳实践,我强烈敦促您充分利用它们。
每周,我都收到无数电子邮件和博客评论关于使用虚拟环境可以避免的问题。虚拟环境不同于虚拟机,尽管名称相似。
要了解虚拟环境,我建议您阅读本文。
让我们安装virtualenv 和 virtualenvwrapper,然后做一点清理:
$ sudo pip3 install virtualenv virtualenvwrapper
$ sudo rm -rf ~/get-pip.py ~/.cache/pip
现在,我们需要再次编辑我们的bash配置文件,以便这两个工具正常工作。
运行Nano(或者你喜欢的文本编辑器):
$ nano ~/.bash_profile
然后将这些行添加到文件的末尾:
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
图3:在Mac OS安装OpenCV 4之前,使用nano文本编辑器编辑 ~/.Bash_profile。
专业小贴士:在不打开编辑器的情况下,可以使用bash命令附加到文件:
$ echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.bash_profile
$ echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bash_profile
$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3" >> ~/.bash_profile
$ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bash_profile
然后源文件:
$ source ~/.bash_profile
您将看到在终端中打印了几行,表示安装虚拟机包装器。
工具为我们提供了许多终端命令:
-
:用于“创建虚拟环境”
-
:破坏虚拟环境
-
:激活虚拟环境
-
:禁用当前虚拟环境
- 您将需要阅读文档以获取更多信息。
让我们利用第一个命令为OpenCV创建Python虚拟环境:
$ mkvirtualenv cv -p python3
注意,是我们环境的名称,我正在创建一个Python 3(由
switch控制)环境。
如果你愿意,你可以用不同的方式来命名你的环境。实际上我喜欢把我的环境命名为:
等等。
在这里,虚拟环境可以用于Python 3 + OpenCV 4。
虚拟环境用于Python 3和OpenCV 3。我的
环境可以用来测试传统Python 2.7 + OpenCV 2.4代码。这些虚拟环境名称很容易记住,允许我无缝地切换OpenCV+Python版本(几乎)。
接下来,让我们在环境中安装NumPy。
可能的是,环境已经活跃(在你的bash提示之前由指示)。以防万一,让我们来
(激活)环境:
$ workon cv
图4:我们是在“CV”虚拟环境中,如在BASH提示符之前用(CV)表示的。在安装包和编译OpenCV 4之前,这是必要的。
每次您希望使用环境或将包安装到其中时,您应该使用命令。
现在我们的环境被激活了,我们可以安装NumPy:
$ pip install numpy
第4步:为Mac OS编译OpenCV 4
与pip、Homebrew和Anaconda等包管理器相比,从源代码编译可以让您对构建进行最大程度的控制。
软件包管理器确实很方便,我将在以后的安装教程中介绍它们,我只是想给您一个合理的警告——虽然它们表面上看起来很简单,但是您将无法获得OpenCV的最新版本,在某些情况下,它在虚拟环境中不能很好地工作。你也可能缺少特征。
我一直都是从源头上编译,你一定要知道,如果你认真工作与OpenCV。
在Github上检查OpenCV
由于OpenCV仍然处于“预发布”,所以zip尚未发布到Github的归档区域。因此,我们将从Github中克隆存储库,并检查已知的好提交。你也可以检查HEAD,但是我已经确认了下面的修订是相对稳定的。
让我们导航到我们的主页并克隆OpenCV和OpenCVI控件。Reffib RePo包含额外的模块和功能,我们经常在PyIGiSeLeCH博客上使用。您应该安装OpenCV库,并附带附加的反模式模块。
当你准备好了,就跟着去克隆存储库:
$ cd ~
$ git clone https://github.com/opencv/opencv.git
$ git clone https://github.com/opencv/opencv_contrib.git
从这里,让我们确保从每个存储库签出特定的提交,确保您能够复制我的安装:
$ cd opencv
$ git checkout 46def2fdc194ebd43a703845013bc54c59ce9d75
$ cd ~/opencv_contrib
$ git checkout 21e1c8b4480c89270193f688c4078e15ba1deb92
$ cd ~
一旦OpenCV 4正式发布,我将更新本指南以使用简单的wget命令,而不是要求您克隆整个存储库并检查特定的提交。
从源编译OpenCV4
既然已经下载了,并且准备就绪,那么让我们使用CMake来设置编译,并使用Make来执行编译。
导航回到OpenCV repo并创建+输入生成目录:
$ cd ~/opencv
$ mkdir build
$ cd build
现在我们为cmake做好了准备。在执行cmake命令之前,请确保使用workon命令,如图所示:
$ workon cv
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D PYTHON3_LIBRARY=`python -c 'import subprocess ; import sys ; s = subprocess.check_output("python-config --configdir", shell=True).decode("utf-8").strip() ; (M, m) = sys.version_info[:2] ; print("{}/libpython{}.{}.dylib".format(s, M, m))'` \
-D PYTHON3_INCLUDE_DIR=`python -c 'import distutils.sysconfig as s; print(s.get_python_inc())'` \
-D PYTHON3_EXECUTABLE=$VIRTUAL_ENV/bin/python \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_EXAMPLES=ON ..
注意:对于上面的cmake命令,我花了相当长的时间来创建、测试和重构它。这是有效的自我配置,没有工作需要的部分。我相信,如果你完全使用它,它将节省你的时间和沮丧。请单击上面代码块的工具栏中的“<= >”按钮以展开代码块。这将使您能够复制和粘贴整个命令(这是相当长的)。
一旦cmake完成,向上滚动(稍有)直到你在你的终端看到下面的信息:
图5:在MaCOS上安装OpenCV 4时检查CGUDE输出是很重要的。请确保您的CV虚拟环境正在被用于Python和NuMPy。
你的输出应该与思维非常相似。您正在寻找的是确保您的Python 3解释器和NumPy在虚拟环境中都将被使用。如果您没有看到这一点,那么很可能在没有进入cv虚拟环境(或者您命名的Python虚拟环境)的情况下执行cmake.。如果是这样的话,不用担心——只需删除构建目录,使用workon命令激活虚拟环境,并重新运行cmake.。
如果你的CGUD输出是好的,你可以通过以下步骤开始编译:
$ make -j4
注意:-J4参数是可选的,将指示 make 4个CPU内核。您可以调整数值或完全离开参数。这种情况并不常见,但有时竞争条件可能会阻止编译完成,此时应该在没有标志的情况下执行make。
在编译过程中休息一下,但别忘了回来创建符号链接。
制作完成后,您应该看到:图6:在MaCOS上编译OpenCV 4已经达到100%。现在我们准备将OpenCV 4链接到我们的CV环境中。
如果您已经达到100%,那么在步骤5之前有一个附加的命令安装OpenCV 4:
$ sudo make install
第5步:MaOS上的Sym链接OpenCV 4到你的虚拟环境站点包
现在我们来创建所谓的“符号链接”。我们需要一个链接从我们的CV虚拟环境站点包到我们的系统站点包,其中安装了OpenCV。实际上,OpenCV将被“链接”到虚拟环境中,允许您将其导入到Python脚本以及命令行解释器中。
首先,让我们检查OpenCV绑定的位置-我们需要确切的位置来建立链接。我鼓励您使用tab完成,而不是复制/粘贴命令到正确的目录中:
$ ls /usr/local/lib/python3.7/site-packages/cv2.cpython-37m-darwin.so
/usr/local/lib/python3.7/site-packages/cv2.cpython-37m-darwin.so
使用该命令的输出,我们将在OpenCV绑定中符号链接到cv Python虚拟环境的site-packages目录:
$ cd ~/.virtualenvs/cv/lib/python3.7/site-packages/
$ ln -s /usr/local/lib/python3.7/site-packages/cv2.cpython-37m-darwin.so cv2.so
重要考虑事项:
- 我们正在创建从cv虚拟环境Python站点包cv2.so到全局站点包cv2.cpython37-darwin.so的符号链接。花些时间去理解它是如何工作的——你可能会读到这篇文章。
- 确定你的路径是正确的。我建议制表完成而不是复制/粘贴。
我不能过分强调这一点:cv Python虚拟环境完全独立于您的系统上的默认Python版本。全局站点包目录中的任何Python包将不可用于CV虚拟环境。类似地,安装在CV的站点包中的任何Python包对于Python的全局安装都是不可用的。当您在Python虚拟环境中工作时,请记住这一点,这将有助于避免许多混乱和头痛。
安装imutls
我也建议你安装我自己的imutls包,如果你经常访问我的博客,因为我们经常使用它:
$ workon cv
$ pip install imutils
第6步:测试你的MaOS+ OpenCV 3安装
测试OpenCV安装以确保正确的链接是很重要的。
我喜欢在虚拟环境中启动Python shell,并检查它是否正确导入,以及版本是否符合我的意图:
$ workon cv
$ python
>>> import cv2
>>> cv2.__version__
'4.0.0-pre'
>>> exit()
图7:为了测试OpenCV 4是否安装在macOS上,在虚拟环境中启动Python并在导入cv2之后执行cv2.u version_u即可。
如果你没有安装任何错误和OpenCV 4就可以了!
运行您的第一个例子与您的新安装OpenCV 4!
如果你用OpenCV进入计算机视觉领域,我猜你想用OpenCV运行一些酷的东西。
让我们先用OpenCV构建一个简单的“文档扫描器”。
我不打算在这里检查所有的代码-如果你有兴趣或者当你有更多的时间,你应该检查原来的帖子。
要开始,只需滚动到“下载”和抓取源代码+图像。
只需输入以下命令即可:
$ workon cv
$ unzip document-scanner.zip
$ cd document-scanner
$ tree
.
├── images
│ ├── page.jpg
│ └── receipt.jpg
├── pyimagesearch
│ ├── __init__.py
│ └── transform.py
└── scan.py
2 directories, 5 files
如您所见,有两个示例图像,一个pyimagesearch模块(需要通过“下载”部分下载——它不是pip-installable)和扫描脚本。
我们需要一个额外的库添加到我们的CV环境:SCIKIT图像。要安装它,只需使用PIP。当你在它,如果你没有安装imuiLS更早,继续安装它,以及:
$ pip install scikit-image imutils
从那里你可以执行下面的命令给OpenCV 4锻炼:
$ python scan.py --image images/receipt.jpg
STEP 1: Edge Detection
STEP 2: Find contours of paper
STEP 3: Apply perspective transform
在每一步结束时,你都需要按下一个键——把窗口放在桌面上。
有时OpenCV将窗口隐藏在另一个窗口中,所以一定要拖动OpenCV图像窗口来查看可用的内容。
下面是文档扫描最后一步的截图:
图8:应用我们的文档扫描仪的步骤3,透视变换。原始图像在左边,扫描图像在右边。
那太有趣了!
通过阅读原始博客文章了解代码是如何工作的。
故障排除与常见问题解答
在这一节中,我讨论了在Mac OS上安装OpenCV 4时读者遇到的一些常见问题和问题。
1.问:我可以用Python 2.7在MaOOS上运行OpenCV 4吗?
答:我建议您使用Python 3,但是如果您正在处理遗留项目,我理解您可能希望使用Python 2.7。以下是你需要做的事情:
- 使用BREW安装Python 2通过HypBurw安装Python 2.7
- 您应该在步骤3中使用2.7的PIP:SUDO Python GET-PI.Py和SUDO PIP安装虚拟ValualEnvrWrPrAPER
- 在步骤3中,只需创建一个Python 2.7环境:MKVielalEnv CV-P PythON2.7
- 验证CMASE输出在步骤4中使用Python 2.7虚拟环境解释器,如图5所示。
2.问:我需要运行brew安装Python吗?Python好像已经安装在我的Mac上了!
答:是的。Python已安装,但您希望Brew的更新Python和Plus BREW将Python放入/Urs/Studio/bin,与您的系统Python分开。
3.问:当我执行MKValualEnv或Workon时,我遇到了一个“命令找不到错误”。
答:有很多原因,你会看到这个错误信息,所有来自步骤3:
- 首先,确保您已经使用PIP包管理器正确安装了ValueLeNV和ValualEnvRePrAPER。通过运行PIP冻结验证,并确保在安装的软件包列表中同时看到ValualEnv和ValualEnvRePrAPER。
- 您的~/.BasHyPrror文件可能有错误。查看您的~/.BasHyPrror文件的内容,以查看是否存在正确的导出和源命令(对于要追加到//BasHyPrror的命令,请检查步骤3)。
- 您可能忘记了您的~/.BasHyx配置文件的来源。确保在编辑它之后运行源~/.BasHyPrror,确保您可以访问MKValueNeV和Workon命令。
4.问:当我打开一个新的终端,注销,或者重新启动我的Mac OS系统,我不能执行MKValueLeNV或Workon命令。
答:参见前一个问题的第2条。
5.问:当我在我的终端运行Python并尝试导入CV2时,我遇到了一个错误。接下来呢?
答:不幸的是,这种情况很难在没有系统的情况下进行诊断。很多事情可能出了问题。最有可能的故障点是符号链接步骤。我建议你做下面的检查符号链接:
$ cd ~/.virtualenvs/cv/lib/python3.7/site-packages
$ ls -al cv2*
lrwxr-xr-x 1 adrian staff 64 Aug 17 2018 cv2.so -> /usr/local/lib/python3.7/site-packages/cv2.cpython-36m-darwin.so
你要找的是->箭头,它指向系统上的一条有效路径。如果路径无效,那么您需要修复一个Sym链接问题。您可以通过删除SyLink并再次尝试步骤5来更正它。
6.问:我能用BREW安装OpenCV而不是从源编译吗?
答:当心!答案是肯定的,但是如果你计划使用虚拟环境,你仍然需要符号链接。我将在将来再编写一个自制的方法。
7.问:我能用PIP安装OpenCV到我的虚拟环境吗?
答:是的,但是……在接下来的两周里,关注一个专门的博客帖子,展示你需要知道的一切。简而言之,PIP将安装一个预编译二进制文件。不幸的是,它可能没有利用你的机器上所有可用的软件,你喜欢OpenCV编译。您可能也有HigGUI的问题,相信我——您想要HigGUI,这样您就可以轻松地使用OpenCV来进行计算机视觉开发和调试。
总结
今天我们在Mac OS机器上安装了带有Python绑定的OpenCV4。
我未来正式安装教程OpenCV 4(包括一个为Raspberry Pi)时我会回来修改。如果您正在寻找我已经发布的OpenCV安装教程,请参阅本页。
敬请期待!
原文链接:Install OpenCV 4 on macOS
作者:Adrian Rosebrock
翻译:徐大白
注意:本文归作者所有,未经作者允许,不得转载