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

苹果系统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.lryc.cn/news/513180.html

相关文章:

  • 《代码随想录》Day21打卡!
  • Dell服务器升级ubuntu 22.04失败解决
  • 构建全志 T113 Tina SDK
  • (推荐)【通用业务分发架构】1.业务分发 2.rpc调用 3.Event事件系统
  • 最近的一些事情
  • CP AUTOSAR标准之FlexRayDriver(AUTOSAR_SWS_FlexRayDriver)(更新中……)
  • Cesium 实战 27 - 三维视频融合(视频投影)
  • GraphRAG实践:docker部署neo4j
  • 常用的数据库类型都有哪些
  • swiftui开发页面加载发送请求初始化@State变量
  • Ribbon和Eureka的集成
  • 关于UE加载osgb数据的研究(一)
  • 探索数据之美,Plotly引领可视化新风尚
  • List排序的方法
  • BurstAttention:高效的分布式注意力计算框架
  • 大数据治理:构建稳健的数据生态系统
  • 【图书介绍】几本适合当教材的大数据技术图书
  • 阴阳师の新手如何速刷5个SP/SSR?!(急速育成)
  • unity学习4:git和SVN的使用差别
  • 四大自平衡树对比:AVL树、红黑树、B树与B+树
  • BUUCTF Pwn ciscn_2019_es_2 WP
  • MongoDb-mongosh-登录
  • C语言day3:shell脚本
  • 微信小程序Uniapp
  • mongoTemplate的复杂组装条件查询
  • httpslocalhostindex 配置的nginx,一刷新就报404了
  • pandas删除值全部为0的整行和整列,还有0.0,0.000000也要删除
  • IO Virtualization with Virtio.part 1 [十二]
  • ShardingSphere-Proxy分表场景:go测试案例
  • OpenStack系列第四篇:云平台基础功能与操作(Dashboard)