The value of knowledge lies not in possession, but in share.

0%

Mac中安装OpenCV

继前面在Mac上安装了Pytorch后(在Mac中搭建PyTorch网络框架),为方便在本地环境上对部分图像处理的算法进行测试,打算在Mac上安装OpenCV。

看了不少教程,发现有些教程中的命令早已老旧无法运行,有些教程中安装过程太过繁杂,怕步骤太多,安装中出了错会影响之前安装的环境,所以综合之后整理了本篇教程,并分给出了不同情况下的处理办法。

情况零:

若电脑已经安装了Python,可通过以下命令安装OpenCV:

1
2
# 电脑已安装Python
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python

测试:

1
2
3
4
5
6
Python 3.7.4 (default, Oct 12 2019, 18:55:28)
[Clang 11.0.0 (clang-1100.0.33.8)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.3.0'

如果没有报错,说明安装成功了。

情况一:

如果在没有安装Python3的情况下安装OpenCV,会自动安装最新的Python版本,并将该版本设置为系统默认Python。

直接运行下面的命令安装OpenCV:

1
2
# 没有安装Homebrew可以查看:《在Mac中搭建PyTorch网络框架》
brew install opencv

测试:

1
2
3
4
5
Python 3.7.4 (default, Oct 12 2019, 18:55:28) 
[Clang 11.0.0 (clang-1100.0.33.8)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>>

如果没有报错,说明安装成功了,恭喜!

情况二:

当Mac中之前已经安装Python 3.6,则在上面的Python3.7的安装过程中会报错。报错的命令忘记截图了,我根据系统的报错,总结了以下解决办法。

注:Mac 默认安装Python2.7,此步骤对Python2.7版本没有影响。

  1. 首先删除老版本Python 3.6

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 1.查看Python版本
    python -V
    # 显示:Python 3.6

    # 2.删除Python 3.6 框架
    ls /Library/Frameworks/Python.framework/Versions/
    # 显示:3.6
    sudo rm -rf /Library/Frameworks/Python.framework/Versions/3.6

    # 3.在应用目录中手动将程序移到废纸篓
    # 或者用以下命令删除
    cd /Applications
    sudo rm -rf Python\ 3.6/ # Python 3.7存在空格
  2. '/usr/local/bin'下,首先罗列出所有需要删除的软连接:

    1
    2
    3
    # To list all files that would be deleted:
    brew link --overwrite --dry-run python
    # 然后对冲突的文件一一删除(我是一一删除后,然后执行的下面的命令,按理直接运行下面的程序会覆盖原来的,这点需要考证)
  3. 覆盖之前Python的软连接:

    1
    2
    # To force the link and overwrite all conflicting files:
    brew link --overwrite python
  4. 修改系统环境变量:

    1
    vim ~/.bash_profile
    • .bash_profile最后添加如下代码(根据自己的路径来修改)
    1
    2
    3
    # Setting PATH for Python 3.7
    alias python="/usr/local/Cellar/python/3.7.4_1/bin/python3"
    alias python2="/usr/bin/python2.7"
    • 使得环境变量生效:
    1
    source ~/.bash_profile

情况三:

如果安装上面教程安装成功了,恭喜你不用再往下面看了,如果没有成功,我们需要手动将OpenCV与系统中Python建立关联。

注意到我们上面使用Homebrew安装了程序,Homebrew安装的程序位置都在该目录下。

1
/usr/local/Cellar/

找到的OpenCV的cv2.***.so文件,我的.so文件位置为:

1
/usr/local/Cellar/opencv/4.1.2/lib/python3.7/site-packages/cv2/python-3.7/cv2.cpython-37m-darwin.so

下面就是和python3环境关联,进入Python3 的site-packages文件夹下面和原来上面的so建立一个软链接。

1
2
cd /usr/local/lib/python3.7/site-packages  
ln -s /usr/local/Cellar/opencv/4.1.2/lib/python3.7/site-packages/cv2/python-3.7/cv2.cpython-37m-darwin.so cv2.so

测试效果:

1
2
3
>>> import cv2  
>>> cv2.__version__
'4.1.2'

若出现此情况,则说明安装成功。

🍭支持一根棒棒糖吧!