苹果系统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!
相关文章:
苹果系统MacOS下ObjectC建立的App程序访问opencv加载图片程序
前言 苹果系统下使用opencv感觉还是有些不太方便,总是感觉有点受到限制。本博客描述的是在MacOS下建立App程序然后调用opencv显示图片时出现的一些问题并最后解决的一个过程。 一、程序的建立 选择程序的类型: 选择界面模式和编程语言: 其余…...
《代码随想录》Day21打卡!
写在前面:祝大家新年快乐!!!2025年快乐,2024年拜拜~~~ 《代码随想录》二叉树:修剪二叉搜索树 本题的完整题目如下: 本题的完整思路如下: 1.本题使用递归进行求解,所以分…...
Dell服务器升级ubuntu 22.04失败解决
ubuntu系统原版本20.04,服务器dell T40. 执行apt update后,再执行apt upgrade。 apt update执行成功,但apt upgrade执行中断,提示如下: Checking package manager Reading package lists... Done Building dependen…...
构建全志 T113 Tina SDK
1、环境配置: 准备一个 Ubuntu 系统,可以是 WSL,虚拟机等,建议版本是 20.04。 1.1、安装必要的软件 进入系统后,输入下方命令安装需要的工具 : sudo apt update -y sudo apt full-upgrade -y sudo apt i…...
(推荐)【通用业务分发架构】1.业务分发 2.rpc调用 3.Event事件系统
一.Reflections和SpringUtil完成扫描包的(反射缓存) 二.id与class的映射泛型上下文(玩家是否登录,rpc调用SeqId,class类名)反射调用 1.netty层的 AccountMsgParam // 登录前 OnlineMsgParam // 登录后 SceneMsgParam // 发到场景层的 2.跨进程rpc调用的…...
最近的一些事情
正义不会缺席 这家公司违法辞退不给工资乱开离职证明。严重影响个人发展。 今天终于收到法院的判决书。 警醒自身发展与社会之间密切交流,敲响警钟。 虽然最终得到的法院的支持,但过程举步维艰。 这其中的过程,也让我对律师、法院和中国…...
CP AUTOSAR标准之FlexRayDriver(AUTOSAR_SWS_FlexRayDriver)(更新中……)
1 简介和功能概述 FlexRay驱动程序(Fr)抽象了特定FlexRay通信控制器(CC)的硬件相关实现细节。本规范主要依赖于符合FlexRay规范[13]的FlexRay CC。此外,本规范还支持符合FlexRay规范[14]的旧版FlexRay控制器。本SWS中因支持的FlexRay规范不同而导致的不同行为在适用的情况下以…...
Cesium 实战 27 - 三维视频融合(视频投影)
Cesium 实战 27 - 三维视频融合(视频投影) 核心代码完整代码在线示例在 Cesium 中有几种展示视频的方式,比如墙体使用视频材质,还有地面多边形使用视频材质,都可以实现视频功能。 但是随着摄像头和无人机的流行,需要视频和场景深度融合,简单的实现方式则不能满足需求。…...
GraphRAG实践:docker部署neo4j
概述 随着图数据库(Graph Database)的流行,越来越多的应用场景开始采用图数据库来处理复杂的关系数据。Neo4j作为领先的图数据库之一,提供了强大的图形查询语言Cypher、高效的存储结构和丰富的生态系统,使得它成为开发…...
常用的数据库类型都有哪些
在Java开发和信息系统架构中,数据库扮演着存储和管理数据的关键角色。数据库种类繁多,各有特色,适用于不同的应用场景。 1. 关系型数据库(RDBMS): • 关系型数据库是最为人熟知的数据库类型,数据…...
swiftui开发页面加载发送请求初始化@State变量
在SwiftUI中,你不能直接在init中更新State变量,因为State是由SwiftUI框架管理的,初始化时不允许直接修改。所以需要在onAppear发送请求然后修改State状态。 在SwiftUI中,如果希望在页面加载时立即发送网络请求,可以使…...
Ribbon和Eureka的集成
Ribbon和Eureka的集成是Spring Cloud Netflix生态系统的一部分,通常用于微服务架构中,以实现客户端负载均衡和服务发现。以下是更详细的集成步骤: 1. 引入依赖 在你的Spring Boot项目的pom.xml文件中添加Eureka客户端和Ribbon的依赖&#x…...
关于UE加载osgb数据的研究(一)
最近关于倾斜数据在UE中加载显示的问题,直接转换格式本地加载的方式避免了数据延迟加载、缓存加载,动态刷新等问题,但是也暴露了突出的问题:常规的模型格式会丢失掉倾斜数据的lod,致使效果缺失。 故而需要深入研究一下UE加载osgb数据的方式方法。 首先,我们需得学习一下…...
探索数据之美,Plotly引领可视化新风尚
在数据如潮的今天,如何精准捕捉信息的脉搏,让数据说话?Plotly,这款强大的数据可视化工具,正以其卓越的性能和丰富的功能,成为数据分析师、科学家及工程师们的得力助手。 Plotly不仅仅是一个绘图库…...
List排序的方法
List 排序方法: 1. list 的 sort() package com.example.a; import java.util.ArrayList; import java.util.Comparator; import java.util.List; class User{private Integer score;private Integer age;public User(Integer score, Integer age){super();this.…...
BurstAttention:高效的分布式注意力计算框架
BurstAttention:高效的分布式注意力计算框架 在现代大型语言模型(LLMs)的应用中,提升注意力机制的计算效率已成为研究的热点。当前,提升计算效率主要有两种方法:一种是优化单设备的计算和存储能力…...
大数据治理:构建稳健的数据生态系统
引言 随着信息技术的迅猛发展,企业每天都在生成海量的数据。这些数据不仅来自传统的业务交易系统,还包括社交媒体、物联网设备、移动应用程序等多个渠道。大数据治理旨在确保组织能够有效地管理其拥有的所有数据资产,以支持决策制定、优化业…...
【图书介绍】几本适合当教材的大数据技术图书
《Spark SQL大数据分析快速上手》 《Spark SQL大数据分析快速上手(大数据技术丛书)》(迟殿委,王泽慧,黄茵茵)【摘要 书评 试读】- 京东图书 《Spark SQL大数据分析快速上手》内容基于Spark新版本展开,符合企业目前开…...
阴阳师の新手如何速刷5个SP/SSR?!(急速育成)
目标:攒5个SP/SSR式神,参与急速育成,省四个黑蛋(想要快速升级技能而且经常上场的式神在攒够5个式神前先不升级)【理论上组成:10蓝40蓝预约召唤福利20修行or抽卡】 关键点:蓝票,新手…...
unity学习4:git和SVN的使用差别
目录 1 svn 1.1 操作逻辑 1.2 对应工具 1.3 SVN避免冲突的好习惯 2 git 2.1 git的基础操作逻辑 2.1.1 commit时,提交文件之外的其他文件需要pull 2.1.2 commit时,发现要提交的本地文件和服务器的文件冲突了 2.1.3 pull 时 2.2 对应工具 2.3 …...
新手别怕!用51单片机+74HC138/573点亮静态数码管,保姆级代码+仿真(Keil C51)
从零玩转51单片机:静态数码管驱动全攻略(74HC13874HC573实战) 第一次拿到51单片机开发板时,看到原理图上密密麻麻的74HC138、74HC573芯片标识,很多初学者都会感到无从下手。这些看似复杂的数字芯片,实际上是…...
从狼群狩猎到参数调优:GWO算法在机器学习超参数搜索中的保姆级指南
从狼群狩猎到参数调优:GWO算法在机器学习超参数搜索中的保姆级指南 在机器学习项目的最后阶段,我们常常会陷入超参数优化的泥潭。网格搜索耗时费力,随机搜索像买彩票,而贝叶斯优化又过于复杂。这时候,一群来自大自然的…...
YOLOv8推理性能跃迁:从CPU到GPU的实战迁移指南
1. 为什么要把YOLOv8推理从CPU迁移到GPU? 第一次用YOLOv8做目标检测时,我盯着屏幕上蜗牛般的推理速度差点崩溃——一张1080P的图片要处理3秒!直到把环境切换到GPU,速度直接飙升到30帧/秒,这种性能飞跃让我彻底明白了硬…...
如何通过智能菜单栏管理让Mac界面焕然一新:Hidden Bar深度使用指南
如何通过智能菜单栏管理让Mac界面焕然一新:Hidden Bar深度使用指南 【免费下载链接】hidden An ultra-light MacOS utility that helps hide menu bar icons 项目地址: https://gitcode.com/gh_mirrors/hi/hidden 在macOS系统中,菜单栏图标堆积是…...
书籍分享:《VirtualLab Fusion物理光学实验教程》
第一章 物理光学概念介绍 1.1 几何光学和光线追迹 1.2 物理光学和光场追迹 1.3 电场、磁场以及坡印廷矢量 1.4 振幅、相位及实部和虚部 1.5 振幅、相位与偏振 1.6菲涅尔公式 1.7 全反射 1.8倏逝波 第二章 光的干涉及干涉系统建模仿真 2.1 牛顿环模拟仿真 2.1.1 牛顿…...
WPF-Control核心架构思想
WPF-Control 项目架构详解 一、核心架构思想 这个项目的架构可以用一句话概括:控件负责显示,服务负责能力,模块负责组合,主题负责外观,ApplicationBase 负责生命周期,IOC 负责连接所有对象。这是一种典型的…...
在Taotoken控制台清晰观测各模型用量与成本消耗情况
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Taotoken控制台清晰观测各模型用量与成本消耗情况 接入多个大语言模型进行开发时,一个常见的困扰是成本不透明。调用…...
手把手改造libmad:将一次性加载改为流式解码,拯救你的内存不足嵌入式系统
嵌入式音频革命:libmad流式解码改造实战指南 在资源受限的嵌入式环境中处理MP3音频,就像试图用吸管喝光整个游泳池的水——传统的一次性加载方式会让你的系统瞬间窒息。当树莓派Pico这类微控制器只有264KB的RAM时,一个5MB的MP3文件就能让内存…...
打通飞书与GitLab:基于Webhook的事件通知与精准@实践指南
1. 为什么需要打通飞书与GitLab的通知系统 在软件开发团队中,代码仓库的每一次变更都可能影响整个项目进度。传统的做法是开发人员手动在群里相关同事,或者依赖邮件通知,这种方式效率低下且容易遗漏重要信息。我曾经参与过一个跨时区协作项目…...
Kindle Comic Converter:漫画爱好者的终极电子阅读器优化工具
Kindle Comic Converter:漫画爱好者的终极电子阅读器优化工具 【免费下载链接】kcc KCC (a.k.a. Kindle Comic Converter) is a comic and manga converter for ebook readers. 项目地址: https://gitcode.com/gh_mirrors/kc/kcc 你是否曾经尝试在Kindle或其…...
