• 如何在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. 第二次执行,显示框将会显示你笔记本摄像头的内容,说明本例程运行成功。
  • 相关阅读:
    laravel5.1--数据库操作
    coreseek (sphinx)+ Mysql + Thinkphp搭建中文搜索引擎详解
    apache配置虚拟主机
    PHP下利用PHPMailer
    linux中编译安装Apache、PHP、MySQL(上)
    MariaDB配置远程访问权限
    虚拟主机的配置
    PHP–图像XX因其本身有错无法显示
    apache重写中匹配?即查询时用到的字符
    nginx反向代理时的情况分析
  • 原文地址:https://www.cnblogs.com/rongyupan/p/14295938.html
Copyright © 2020-2023  润新知