一个在ios当中采用ObjectC和opencv来显示图片的实例

前言

        在ios中采用ObjectC编程利用opencv来显示一张图片,并简单绘图。听上去似乎不难,但是实际操作下来,却不是非常的容易的。本文较为详细的描述了这个过程,供后续参考。

一、创建ios工程

1.1、选择ios工程类型

1.2、选择接口模式和语言

1.3、基本工程创建完毕

二、导入opencv的ios库

2.1、opencv的ios库的下载

可以从opencv的官网进行下载。

2.2、设置opencv的基础路径

2.3、在Link位置设置opencv库

添加完毕后如图:

  • 加入opencv头文件开始调试

3.1、先加入3个opencv的头文件

在ViewController.m中加入3个头文件,如下图:

3.2、不支持C++造成的错误提示

开始build:

3.2、修改扩展名

扩展名从.m修改为.mm,如下图:

3.4、重新编译通过

如图:

运行后手机上可得一个白板的页面。(如果在运行的过程中提示需要teamID,则填入teamID)

四、图片的现实

4.1、给手机界面添加一个UIImageView

添加UIImageView后的界面如下图:

4.2、增加一个图片资源

将一个图片拖动到工程下面,会有是否需要copy的提示,选择打上勾,如下图:

拖动完成后,如下图:

为何要将图片放入工程当中,作为资源进行使用呢?这是为了突破沙箱机制。方便文件的访问。

4.3、给UIImageView在代码中增加一个引用变量

完成后如下图:

4.4、增加一个图片载入程序

编译通过,运行后发现苹果是紫色的,而非图片原来的红色。所以估计是BGR和RGB的对应关系,B和R调换了。

4.5、对颜色进行调整

增加了一个颜色通道的调换函数后,就可以正常的显示图片了。代码如下图:

4.6、这个程序的关键节点

这个程序的关键节点是MatToUIImage函数,直接来自opencv。声明在ios.h当中非常的方便。前面采用chatgpt和文心一言查询获取的转换函数,屡屡报错非常的不好用。只好放弃了。

这也从侧面说明了目前的大模型还有很多的不足之处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Rust权威指南》学习笔记(五)

高级特性 1.在Rust中,unsafe是一种允许绕过Rust的安全性保证的机制,用于执行一些Rust默认情况下不允许的操作。unsafe存在的原因是:unsafe 允许执行某些可能被 Rust 的安全性检查阻止的操作,从而可以进行性能优化,如手…

【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 3:算法实现

目录 1 三种多头编码(MHE)实现1.1 多头乘积(MHP)1.2 多头级联(MHC)1.3 多头采样(MHS)1.4 标签分解策略 论文:Multi-Head Encoding for Extreme Label Classification 作者…

行为模式1.模板方法模式

行为型模式 模板方法模式(Template Method Pattern)命令模式(Command Pattern)迭代器模式(Iterator Pattern)观察者模式(Observer Pattern)中介者模式(Mediator Pattern…

PHP语言的计算机基础

计算机基础与PHP语言入门 在当今信息技术高速发展的时代,计算机已经成为我们日常生活中不可或缺的重要工具。学习计算机基础知识,不仅能增强我们对信息技术的理解,还会为我们后续学习编程语言打下良好的基础。本文将以PHP语言为切入点&#…

docker中使用Dockerfile设置Volume挂载点

关于在docker中如何使用Volume,可以参考文章: docker中使用Volume完成数据共享-CSDN博客 如果想在生成docker镜像的时候设置好挂载点,而不是在运行镜像生成容器时生成。 下面以自建一个tomcat镜像为例,演示如何在生成镜像时设置…

在Mac电脑上搭建Gradle

1. 检查是否已安装Homebrew 打开终端,输入以下命令检查Homebrew是否已安装: brew -v如果显示版本号,则表示已安装。如果未安装,请运行以下命令安装Homebrew: /bin/bash -c "$(curl -fsSL https://raw.githubus…

springboot548二手物品交易boot代码(论文+源码)_kaic

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统二手物品交易信息管理难度大,容错率低&#x…

仿生的群体智能算法总结之三(十种)

群体智能算法是一类通过模拟自然界中的群体行为来解决复杂优化问题的方法。以下是30种常见的群体智能算法,本文汇总第21-30种。接上文 : 编号 算法名称(英文) 算法名称(中文) 年份 作者 1 Ant Colony Optimization (ACO) 蚁群优化算法 1991 Marco Dorigo 2 Particle Swar…

通往O1开源之路

“Scaling of Search and Learning: A Roadmap to Reproduce o1 from Reinforcement Learning Perspective”由复旦大学和上海人工智能实验室的研究者撰写。该论文从强化学习视角出发,深入分析了实现类似OpenAI o1模型性能的路线图,聚焦于策略初始化、奖…

AF3 AtomAttentionEncoder类的init_pair_repr方法解读

AlphaFold3 的 AtomAttentionEncoder 类中,init_pair_repr 方法方法负责为原子之间的关系计算成对表示(pair representation),这是原子转变器(atom transformer)模型的关键组成部分,直接影响对蛋白质/分子相互作用的建模。 init_pair_repr源代码: def init_pair_repr(…

DS复习提纲模版

数组的插入删除 int SeqList::list_insert(int i, int item) { //插入if (i < 1 || i > size 1 || size > maxsize) {return 0; // Invalid index or list is full}for (int j size-1; j > i-1; j--) { // Shift elements to the rightlist[j1] list[j];}li…

SD下载、安装、使用、卸载-Stable Diffusion整合包v4.10发布!

目录 前言概述 SD安装1、安装软件2、启动3、配置4、运行5、测试 导入SD模型【决定画风】常用模型下载安装模型 SD卸载SD文生图提示词提示词使用技巧提示词的高级使用技巧强调关键词 前言 我向来不喜欢搞一些没有用的概念&#xff0c;所以直接整理可能用到的东西。 sd简单的说…

C# _ 数字分隔符的使用

总目录 一、数字分隔符是什么&#xff1f; _ 用作数字分隔符。可以将数字分隔符用于所有类型&#xff08;二进制&#xff0c;十进制&#xff0c;十六进制&#xff09;的数字文本。数字分隔符 _ 在编译时是被编译器忽略的&#xff0c;因此在语义上对数字结果没有任何影响。 二…

工程师了解的Lua语言

1、关于lua语言 lua语言是用于嵌入式领域当中的一门脚本语言&#xff0c;其实在大学期间&#xff0c;我也没有接触过这门语言&#xff0c;但是在未来的发展之路当中&#xff0c;需要用到这门语言&#xff0c;所以在我的知识库当中添加这门语言知识是必要而且重要的&#xff0c;…

Mac iTerm2集成DeepSeek AI

1. 去deepseek官网申请api key&#xff0c;DeepSeek 2. 安装iTerm2 AI Plugin插件&#xff0c;https://iterm2.com/ai-plugin.html&#xff0c;插件解压后直接放到和iTerms相同的位置&#xff0c;默认就在/Applications 下 3. 配置iTerm2 4. 重启iTerm2,使用快捷键呼出AI对话…

1.2.1 归并排序

归并排序原理 1&#xff09; 整体就是一个简单递归&#xff0c; 左边排好序、 右边排好序、 让其整体有序 2&#xff09; 让其整体有序的过程里用了外排序方法 3&#xff09; 利用master公式来求解时间复杂度 4&#xff09; 归并排序的实质 时间复杂度O(N*logN)&#xff0c;额…

MySQL数据库笔记——多版本并发控制MVCC

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;本文详细介绍MySQL的并发控制&#xff1a;多版本并发控制MVCC。 文章目录 背景介绍数据库并发控制——锁机制悲观锁和乐观锁悲观锁乐观锁 数据库并发控制——MVCC 的引入MVCC 和锁机…

内部类 --- (寄生的哲学)

内部类总共有 4 种&#xff08;静态内部类、非静态内部类、局部内部类、匿名内部类&#xff09; 作用&#xff1a; 一&#xff1a;内部类提供了更好的封装&#xff0c;可以把内部类隐藏在外部类之内&#xff0c;不允许同一个包中的其他类访问该类。 二&#xff1a;内部类可以…

电脑里msvcr120.dll文件丢失怎样修复?

电脑里msvcr120.dll文件丢失的修复指南 在电脑的日常使用中&#xff0c;我们可能会遇到各种各样的系统文件丢失问题&#xff0c;其中msvcr120.dll文件的丢失就是较为常见的一种。作为一名在软件开发领域深耕多年的从业者&#xff0c;我将为大家详细解析msvcr120.dll文件的重要…

今日头条ip属地根据什么显示?不准确怎么办

在今日头条这样的社交媒体平台上&#xff0c;用户的IP属地信息对于维护网络环境的健康与秩序至关重要。然而&#xff0c;不少用户发现自己的IP属地显示与实际位置不符&#xff0c;这引发了广泛的关注和讨论。本文将深入探讨今日头条IP属地的显示依据&#xff0c;并提供解决IP属…