• macOS下编译opencv-4.5.2+opencv_contrib-framework



    前言

    本博主前后编译了OpenCV的各种版本,感兴趣的可以浏览之前的博文。此篇为iOS编译opencv-framework,官网发布的opencv-4.x-ios-framework.zip不包括opencv_contrib模块,如果不需要里面的功能,则可以直接使用官方版。

    说明:本文使用的系统和软件版本以及工作目录都是本博真实环境,仅供参考。


    一、编译环境和工具

    1.系统环境和版本

    macOS:
    在这里插入图片描述
    Xcode:
    在这里插入图片描述

    2.工具

    Homebrew:
    在这里插入图片描述
    CMake:
    在这里插入图片描述
    如果没有cmake:

    brew install cmake
    
    • 1

    3.OpenCV版本

    opencv-4.5.2
    opencv_contrib-4.5.2

    二、编译步骤

    1.准备工作目录

    在这里插入图片描述

    2.修改编译脚本

    脚本位置:
    Workspace/opencv-4.5.2/platforms/ios/build_framework.py

    一共需要修改三处,分别位于47行、491行、496行:

    ...
    self.contrib = None
    ...
    folder = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "../.."))
    ...
    parser.add_argument('--contrib', metavar='DIR', default=None, help='folder with opencv_contrib repository (default is "None" - build only main framework)')
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    改为

    ...
    self.contrib = os.path.abspath(contrib)
    ...
    folder = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "../.."))
    folder2 = os.path.join(os.path.join(os.path.dirname(folder), "opencv_contrib-4.5.2"))
    ...
    parser.add_argument('--contrib', metavar='DIR', default=folder2, help='folder with opencv_contrib repository (default is "None" - build only main framework)')
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    简单说就是配置opencv_contrib的位置,根据自己的目录修改。

    3.开始编译

    cd Workspace
    python opencv-4.5.2/platforms/ios/build_framework.py ios
    
    • 1
    • 2

    按照官方的说法,执行上述这一行命令后,就会编译成功,在Workspace目录下会出现ios目录,里面包含着各种arm平台的framework包。
    然而,经验告诉本博主,世上没有一次就编译通过的工程。。。


    遇到的问题

    首先,命令

    python opencv-4.5.2/platforms/ios/build_framework.py ios
    
    • 1

    以及之前的所有准备工作都是OK的,问题是当前macOS版本已经不再支持python2,无法执行python命令,似乎所有新版macOS都不再支持python2。
    在这里插入图片描述

    尝试1:

    python3 opencv-4.5.2/platforms/ios/build_framework.py ios
    
    • 1

    得到了错误:

    returned non-zero exit status 65
    
    • 1

    这个错误可以在GitHub上找到很多,以及各种解决办法。

    尝试2:

    在这里插入图片描述

    sudo ln -s /usr/bin/python3 /usr/bin/python
    
    • 1

    根据各位大神提供的解决方案,最多的是为python3建立软连接。但是,目录/usr/bin/是没有权限建立软连接的,如果在/usr/local/bin/python3就解决了。

    尝试3:

    python3 -m venv .venv
    source .venv/bin/activate
    python opencv-4.5.2/platforms/ios/build_framework.py ios
    
    • 1
    • 2
    • 3

    Bingo…
    一定要能执行python而不是python3,尝试多次,对本博主的各种环境而言,最简单有效的就是建立虚拟环境,在虚拟环境中执行此命令。
    另外,就不要尝试在macOS中安装python2了,过去的就让它过去吧。。。
    编译后得到如下目录内容:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    整个编译过程确实比编译OpenCV4Android要简单很多。。。

    参考链接:https://blog.csdn.net/GikkiAres/article/details/84338358

  • 相关阅读:
    【JUC】读写锁
    基于PHP+MYSQL酒店管理系统的设计与开发
    官方烧录软件烧写2023.10版本树莓派镜像
    应用在苹果应用商店该如何进行优化
    使用select实现服务器并发
    【FTP文件下载】Java基于commons-net依赖包实现从FTP服务器下载文件(亲测可用)
    微信公众号订阅通知/一次性订阅通知
    C#落选,Python“连庄”年度编程语言,TIOBE 1月编程语言排行榜出炉
    Checking out and building Chromium on Linux
    webpack原理篇(六十):使用 loader-runner 高效进行 loader 的调试
  • 原文地址:https://blog.csdn.net/yinqinggong/article/details/126034336