使用源码进行编译,在macOS 上安装 OpenCV 4 。
macOS 版本:macOS Big Sur 11.4。

虽然可以参考这篇文章,使用 pip 快速的安装,但使用 pip 安装的 OpenCV 缺少一些算法,因此这篇文章介绍通过编译源码的方式,完整安装官方版本的 OpenCV。


本文目录

  • 1.安装 Xcode
  • 2.安装 Homebrew 及依赖包
    • 2.1 安装 Homebrew
    • 2.2 使用 Homebrew 安装依赖包
    • 2.3 安装 pip 并配置虚拟环境
  • 3. 下载并编译 OpenCV 4
    • 3.1 下载 OpenCV 4
    • 3.2 对 OpenCV 源代码进行编译并安装
  • 4. 将 OpenCV 4 链接到虚拟环境
  • 5. 验证安装情况
  • 6. 总结

简单而言,在 macOS 上安装 OpenCV,需要首先安装 XcodeHomebrew,之后建立 Python 虚拟环境(可选),最后再使用源码编译安装 OpenCV 4。

1.安装 Xcode

Xcode 是 Apple 提供的集成应用环境,可在 macOS 上免费下载使用。

使用 macOS 上的 App Store,搜索并下载安装 Xcode

安装完成后,需要接受 license 许可。打开一个 终端(Terminal) 窗口,输入以下命令:

sudo xcodebuild -license

向下滑动,接受许可。之后需要安装 Apple Command Line Tools

sudo xcode-select --install

点击 “安装(Install)” 按钮,即可安装完成,就具备了 makegccclang 等编译器工具。

2.安装 Homebrew 及依赖包

2.1 安装 Homebrew

Homebrew 的官方解释是: macOS(或 Linux)缺失的软件包的管理器,可以用于安装非预装的软件包。

由于种种原因,国内的同学无法直接通过官方渠道安装 Homebrew,有网友自己建立了中文的安装脚本:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

按照中文指示,选择安装源即可完成安装:

另外,卸载 Homebrew 的命令是:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)"

安装完成后,可以使用下面的命令进行升级:

brew update

然后对 macOS 的环境变量文件(bash_profile)进行修改,可以使用 vimnanoemacs 的不同的编辑器进行修改:

vim ~/.bash_profile

VIM 的常见命令可以参考本文。

并在其中增加 Homebrew 的路径:

# Homebrew
export PATH=/usr/local/bin:$PATH

保存并退出 .bash_profile 文件,并执行 bash 文件使修改生效:

source ~/.bash_profile

2.2 使用 Homebrew 安装依赖包

在安装了 OpenCV 之前,还需要使用 Homebrew 安装一些编译所需的工具,同时也需要一些读取 JPEG、PNG、TIFF 等格式图像的 I/O 工具以及其他优化包等依赖包。

可以使用下面的命令安装这些依赖包:

brew install cmake pkg-config
brew install jpeg libpng libtiff openexr
brew install eigen tbb

除了上面工具外,建议安装一个 wget 工具,便于使用命令行进行下载:

brew install wget

同时,建议安装一个 git 工具,便于从 GitHubGitee 等网站直接下载1

brew install git

2.3 安装 pip 并配置虚拟环境

可以参考我之前写的 这篇文章 中有关安装 pip 并配置 Python 虚拟环境的相关内容。

同时,如果使用国内镜像较慢时,可以考虑 将 pip 使用的源修改为国内的镜像源。

使用下面命令设置虚拟环境 cv_test

mkvirtualenv cv_test -p python3

通过 workon cv_tset 命令进入虚拟环境:

同时,在这个虚拟环境下安装 Numpy

pip install numpy

3. 下载并编译 OpenCV 4

相比使用 pipHomebrewAnaconda 等工具,对 OpenCV 进行编译安装,可以有更多的模块和功能可用。

3.1 下载 OpenCV 4

OpenCV 包括了 opencv 和 opencv_contrib 两种安装包。其中 opencv_contrib 包括了附加模块,建议使用该安装包(但是同时也需要 opencv 的包。

可以使用 wget 从 OpenCV 的官方 GitHub 仓库下载(以 4.0.0 版本为例):

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

如果安装了 git,可以直接克隆/下载一下 OpenCV 的在线 Git 库:

git clone https://gitee.com/idledo/opencv.git
git clone https://gitee.com/idledo/opencv_contrib.git

同样,由于众所周知的网络原因,我没用 OpenCV 的官方 Git 库,而用了热心网友在 Gitee 上的库…

当然,也可以使用浏览器从官网下载不同版本的 Source 文件。

3.2 对 OpenCV 源代码进行编译并安装

以使用 git 下载的源代码为例,进入 opencv 目录,创建并进入 build 目录:

cd opencv    # 进入 opencv 目录
mkdir build    # 创建 build 目录
cd build    # 进入 build 目录

然后在相应的虚拟环境下(如我前面创建了 cv_test 虚拟环境),运行如下 cmake 命令:

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 OPENCV_ENABLE_NONFREE=ON \-D BUILD_EXAMPLES=ON ..

经过自动运行后, 终端将显示 OpenCV 编译完毕。

运行命令安装 OpenCV:

sudo make install

一段时间后,显示安装完成:

4. 将 OpenCV 4 链接到虚拟环境

下面创建所谓的 “符号链接(symbolic link)”,将我们 cv_test 虚拟环境的 site-packages 连接到我们系统的 site-packages,这是 OpenCV 安装的位置。

首先,确定虚拟环境中的 Python 的版本(使用 python --version 命令,这里以 Python 3.7 为例),并寻找对应的 cv2.cpython-37m-darwin.so 的位置。

比如我电脑中该文件的位置是:

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

下面需要将该文件链接到 cv_test 虚拟环境中:

cd ~/.virtualenvs/cv_test/lib/python3.7/site-packages   # 进入到虚拟环境相应的目录下
ln -s /usr/local/lib/python3.7/site-packages/cv2/python-3.7/cv2.cpython-37m-darwin.so cv2.so # 链接文件

5. 验证安装情况

cv_test 虚拟环境下,输入 python3 进入 Python 环境,并使用 import cv2 导入 OpenCV,使用 cv.__version__ 显示 OpenCV 版本:

import cv2
cv.__version__

下图显示已安装配置完成了 OpenCV:

6. 总结

使用源码编译的方式在 macOS 上安装 OpenCV,步骤较为复杂,部分内容因个人电脑配置而不同,欢迎各位在评论区讨论碰到的困难。


  1. 关于 Git 介绍,可以参考该网站。当然,本文只用到了 Git 最最简单的操作。 ↩︎

在 macOS 上安装 OpenCV相关推荐

  1. OpenCV Java入门一 在MAC系统上安装OpenCV

    OpenCV网上讲的一个都不对,要么卡死电脑,要么训练模型写死,要么都只是显示显示人脸就说入门了.没有一个从安装.使用.驱动摄像头.训练模型.辩别人脸的全过程.最夸张的是连怎么安装个OpenCV的资料 ...

  2. opencv 安装_如何在 CentOS 8 上安装 OpenCV

    本文最先发表在: 如何在 CentOS 8 上安装 OpenCV​www.itcoder.tech OpenCV(Open Source Computer Vision Library) 是一个开源的 ...

  3. qtiplot编译失败linux,在macOS上安装 qtiplot 免费版

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 最近更新时间:2019-10-04 一.简介 众所周知,对于广大科研狗来说,origin是一款不可多得的使用软件,但or ...

  4. MacOS中安装OpenCV

    MacOS中安装OpenCV MacOS中安装OpenCV 所需的包 安装CMake 获取OpenCV源代码 获取最新的稳定OpenCV版本 从Git存储库中获取最新的OpenCV 使用CMake从源 ...

  5. 在windows上安装OpenCV

    在windows上安装OpenCV,官方提供的教程,我翻译了一下.如有不正解,请指正 使用git-bash(版本> = 2.14.1)和cmake(版本> = 3.9.1)安装 1.您必须 ...

  6. macos 安装scala_如何在MacOS上安装Scala和Apache Spark

    macos 安装scala by Jose Marcial Portilla 通过何塞·马西尔·波蒂利亚(Jose Marcial Portilla) 如何在MacOS上安装Scala和Apache ...

  7. macos安装python3.6_在CentOS 7/Ubuntu 16.04/Debian 9/macOS上安装Python 3.6的方法

    本文介绍在CentOS 7/Ubuntu 16.04/Debian 9/macOS操作系统上安装Python 3.6的方法,包括使用Python 3.6创建virtualenv,目前大多数Linux发 ...

  8. 如何在Ubuntu 18.04上安装OpenCV

    本教程介绍了如何在Ubuntu 18.04上安装OpenCV. OpenCV(开源计算机视觉库)是一个开源计算机视觉库,具有C ++,Python和Java的绑定.它的用途非常广泛,包括医学图像分析, ...

  9. 在MacOS上安装MacTex

    现在,TeX\TeXTE​X已经成为科研人员撰写科技论文的神器之一.在易用性和美观方面,Mac亦是众多科技工作者选择之一.在Mac上,我们通常会使用与TexIive同源的MacTex编写TeX\TeX ...

最新文章

  1. “Jupyter的杀手”:Netflix发布新开发工具Polynote
  2. mysql省市县三级互动_mysql+ajax的省市县三级联动
  3. sql中索引不会被用到的几种情况
  4. spring mvc学习(32):原生代码导入
  5. mysql 启动_mysql安装、启动
  6. c/c++ 基金会(七) 功能覆盖,虚函数,纯虚函数控制
  7. oracle 多表视图更新
  8. 按3倍中误差去除粗差(C++)
  9. 杭电数字电路课程设计——出租车计费器
  10. html中三角函数表示什么,三角函数a怎么求
  11. 技术领导力 程序员如何才能带团队 文摘 (一)
  12. 计算机音乐专业考研,武汉音乐学院2021年硕士研究生招生考试《计算机音乐作曲》考试大纲...
  13. 团队成员筛选的核心秘档:三否三拒三不动
  14. PaddleNLP_基于seq2seq的对联生成
  15. Android原生OS风格ROM包,小米5S 的LineageOS14.1刷机包 安卓7.1.1原生风格 20180203更新...
  16. python onenet_onenet简介
  17. 动漫推荐之恋爱随意链接
  18. JS和node.js的区别
  19. Java操作数据库方式五MyBatis使用入门
  20. web连接蓝牙电子秤navigator.bluetooth

热门文章

  1. 报org.apache.ibatis.binding.BindingException: Type interface com.olx.service.UserMapper is not known
  2. 中华PDF开天裁决传奇这个该死的东西怎么删除?
  3. 如何安装与卸载NAS应用程序
  4. 个推 php ios,消息推送API
  5. 抖音落地页跳转添加微信好友的方法
  6. acm中的一些博弈论知识
  7. MTK Camera驱动移植
  8. 网易有道 | REDIS 云原生实战
  9. 井蛙不可以语于海者,拘于虚也;夏虫不可以语于冰者,笃于时也
  10. 0成本下载毕业论文——知网等N多资源