如何在M1芯片的MacBook上安装opencv

本文编辑时间:2021-01-18
当前最新版本:opencv4.5.1+opencv_contrib4.5.1

opencv4.5.1安装

直接使用homebrew安装:brew install -s opencv

有关opencv_contrib的问题

见这里:https://github.com/Homebrew/homebrew-core/blob/master/Formula/opencv.rb 这是使用brew安装时执行的命令,我们可以看到它下载了opencvopencv_contrib两个包,同时查看cmake指令,这里挑几个来看:

  • 第71行:启用了non-free算法的编译;
  • 第72行:启用了opencv_contrib编译;

所以,homebrew默认安装opencv_contrib,不需要考虑重新编译opencv+opencv_contrib,这也就是为什么说brew安装是最简单的方法。

自己在这个地方停留了很长时间,在寻找如何补全编译,后来在官方文档中看到了这个文件,解决了自己的问题。

在MacBook Air with M1上,下载包文件+编译时间在7分钟左右;

安装后的目录分析

现阶段,M1原生的homebrew的安装目录只能为/opt/homebrew。homebrew安装的包都在/opt/homebrew/Cellar下,opencv也不例外,具体为/opt/homebrew/Cellar/opencv/4.5.1_2,其文件结构如下:

4.5.1_2
	|__bin
	|
	|__include
	|		|__opencv4
	|				|__opencv2
	|						|__opecv.hpp
	|						|__videoio.hpp
	|						|__...
	|__lib
	|		|__libopencv_xxx.dylib
	|		|__...
	|
	|__share

这里只展开了include/opencv4/opencv2lib文件夹下的部分内容,我们可以大概看出:

  • include/opencv4/opencv2:C++中#include <opencv2/opencv.hpp>正是这里的目录。这里面不仅包含了opencv的头文件,更有像videoio,surface_matching等来自contrib库的文件夹和文件;
  • lib:配置Library Path正是这个目录。

下面结合Xcode来看一下这些目录怎么用。

Xcode调用方法

参考链接:https://zhuanlan.zhihu.com/p/113873616

这里面有关Xcode的配置需要改三处:

  • 第一次导入dylib文件时,目录应该是上面的/lib文件夹处;
  • 设置Search Path时,目录应该是如下图所示:
    Search Path路径

执行测试代码,出图即可。

执行官方源码自带的../samples/cpp/example_cmake

  1. 获取源码:不需要从官网上再去下载。在~/Library/Caches/Homebrew目录下,就有brew下载的缓存,搜索opencv即可找到opencv和opencv_contrib的tar压缩文件;
  2. 终端下进入opencv源码的上述路径。删除:除了CMakeList.txtexample.cpp以外的文件。
  3. 执行:cmke .,成功后执行make,最后运行./opencv_example即可。
  4. 第一次执行,终端会请求摄像头权限,允许即可,然后屏幕会出现显示框,左上角有Hello opencv字样,显示内容为黑色。此时在显示框内部用键盘随便输入按键便会自动退出。
  5. 第二次执行,显示框将会显示你笔记本摄像头的内容,说明本例程运行成功。
原文地址:https://www.cnblogs.com/rongyupan/p/14295938.html