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

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)')
...

改为

...
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)')
...

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

3.开始编译

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

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


遇到的问题

首先,命令

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

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

尝试1:

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

得到了错误:

returned non-zero exit status 65

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

尝试2:

在这里插入图片描述

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

根据各位大神提供的解决方案,最多的是为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

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

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

遇到的问题2

在调用二维码接口时,遭遇崩溃,因为iOS路径assert语句,简单处理方式就是注释四行路径检测:
wechat_qrcode.cpp中WeChatQRCode构造方法内:

//CV_Assert(utils::fs::exists(detector_prototxt_path));
//CV_Assert(utils::fs::exists(detector_caffe_model_path));
//CV_Assert(utils::fs::exists(super_resolution_prototxt_path));
//CV_Assert(utils::fs::exists(super_resolution_caffe_model_path));
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值