zoukankan      html  css  js  c++  java
  • 如何在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. 第二次执行,显示框将会显示你笔记本摄像头的内容,说明本例程运行成功。
  • 相关阅读:
    Vue根据URL传参来控制全局 console.log 的开关
    原来你是这样的毛玻璃
    CSS3边框会动的信封
    判断当前系统当前浏览器是否安装启用 Adobe Flash Player,检查在chrome中的状态
    随笔一个正则
    PHP实现栈数据结构
    php实现一个单链表
    php中按值传递和按引用传递的一个问题
    利用shell脚本或者php移动某个文件夹下的文件到各自的日期组成的目录下
    php中DateTime、diff
  • 原文地址:https://www.cnblogs.com/rongyupan/p/14295938.html
Copyright © 2011-2022 走看看