当前位置: 首页 > article >正文

苹果系统MacOS下ObjectC建立的App程序访问opencv加载图片程序

前言

    苹果系统下使用opencv感觉还是有些不太方便,总是感觉有点受到限制。本博客描述的是在MacOS下建立App程序然后调用opencv显示图片时出现的一些问题并最后解决的一个过程。

一、程序的建立

 选择程序的类型:

选择界面模式和编程语言:

其余类同,可参照我的另外二篇博客《苹果MacOS 调用自编译opencv的Dylib显示一个图片的C++程序的步骤》、《苹果系统MacOS下采用ObjectC访问opencv加载图片的一个简单实例》。

二、基本的测试程序

     在App的面板上放了一个Button按钮,点击一下就会产生一个提示信息,如图:

运行的时候会出现如下的提示,但是点“扔要打开”即可

(这是MacOS app程序调用了自编译的opencv的缘故)

点击按钮会有如下的提示:

至此说明程序结构已经完整有效。

三、加入opencv语句进行调试

     加入了opencv的语句,并配置了opencv的库和头文件等(相关配置可参考本文前面所提到的另外两篇博客),发现点击button按钮后,无法得到我们想要的结果,而是提示文件找不到或者无法加载,如下图所示:

     那么,我们对比《苹果系统MacOS下采用ObjectC访问opencv加载图片的一个简单实例》所对应的Command(Console)工程中的代码和运行效果:

      感觉好像,图片的路径是没有问题的,那么问题出在哪里呢?

四、加入路径查找程序进行判断

从上面这个截图可以看出,这个文件路径是确实存在的。

五、其他opencv的功能是可以用的

那么,是否MacOS app这种模式下opencv不可以用呢?加入了一个利用opencv画红框的程序进行调试,测试结果如下:

这个说明opencv的功能也是可以被调用的。那么既然opencv功能可以被调用,文件的路径又是真实存在的,那么问题到底出在什么地方呢?

六、找出的原因所在

最后,从网上寻找的答案分析下来,主要是MacOS app存在一个沙箱的问题。这个和网页的沙箱问题有类似的地方。就是沙箱内的程序访问本地文件是有限制的。于是,将需要显示的apple.jpg放入到了程序的资源当中,采用如下的方式进行访问:

如上图所示,将显示红色方框的代码屏蔽,然后将传统的从本地文件载入图片的方式,改为从资源文件中载入图片。运行结果如下:

Nice!


http://www.kler.cn/a/460838.html

相关文章:

  • uboot ,s5pv210 ,bootm分析
  • 全国城市经纬度--包括省会(直辖市)、地级市
  • 试题转excel;word转excel;大风车excel(1.1更新)
  • 异步爬虫之aiohttp的使用
  • 二、github基础
  • 《计算机组成及汇编语言原理》阅读笔记:p177-p177
  • 【机器学习】机器学习的基本分类-自监督学习-对比学习(Contrastive Learning)
  • 解决vue-i18n在非.vue文件中,在其他js文件中无法使用的问题
  • Ubuntu 搭建SVN服务
  • 探索基于WebAssembly的下一代前端性能优化方案
  • 如何在谷歌浏览器中使用自定义CSS
  • 在pytest钩子函数中判断Android和iOS设备(方法一)
  • 【2024年-5月-28日-开源社区openEuler实践记录】走进 GCC:开源编译器的传奇之旅
  • ACE之ACE_Message_Queue
  • 《Java核心技术II》抽取子流和组合流
  • 攻破 kioprix level 4 靶机
  • C++语言编程————C++数据类型与表达式
  • 期权懂|国内场外期权都有哪些种类?
  • MybatisPlus查询更so easy
  • 数据结构与算法之动态规划: LeetCode 62. 不同路径 (Ts版)
  • 非常简单实用的前后端分离项目-仓库管理系统(Springboot+Vue)part 5(未实现预期目标)
  • Pytest 高级用法:间接参数化
  • 25考研希望渺茫,工作 VS 二战,怎么选?
  • 2024年RAG:回顾与展望
  • KEGG大更新:开启生物研究新纪元
  • 物联网技术在电商API接口中的应用实践