iOS CoreImage专题(一)—— 概述

2024-09-03 04:38
文章标签 概述 ios 专题 coreimage

本文主要是介绍iOS CoreImage专题(一)—— 概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 前言
  • 什么是CoreImage
    • 概览
    • 查询CoreImage的滤镜列表及它们的属性
  • 处理图像
    • 概述
    • 内建滤镜
    • 创建CoreImage上下文
    • 在iOS上创建一个不需要实时性能的CoreImage上下文
    • 在iOS上创建一个需要实时性能的CoreImage上下文
    • 创建一个CIImage对象
    • 创建CIFilter并设值
    • 获取输出图像
    • 渲染输出图像
  • 总结


前言

虽然是一个专题,但是每个章节的内容都不算多。
所以我将本专题的Demo汇总到了下面这个git仓库中。
这个demo里面包含了本专题所有的小demo的实现。
通过一个navigationController来管理。本专题是对苹果CoreImage编程指南的整理以及demo的具体实现。
更多内容请参见苹果官方的CoreImage类参考:
https://developer.apple.com/library/prerelease/tvos/documentation/GraphicsImaging/Reference/CoreImagingRef/index.html

github link for demo


什么是CoreImage

CoreImage一个图像处理和分析技术,同时也提供了对视频图像实时处理的技术。它处理的图像数据基于CoreGraphics,CoreVideo,和Image I/O框架,既可以使用GPU也可以使用CPU的渲染路径。CoreImage封装了底层图形处理的实现细节,它只提供非常易用的API接口。你不必知道OpenGL和OpenGL ES是如何利用GPU的,你爷不必知晓GCD(Grand Central Dispatch)是如何利用多核进行处理的,CoreImage帮你把这些都处理好了。

CoreImage与操作系统的关系

概览

CoreImage框架提供:
- 对内建(built-in)图像处理滤镜的访问
- 特征识别能力
- 对自动图像增强的支持
- 能将多个滤镜组成滤镜链来创建自定义效果

查询CoreImage的滤镜列表及它们的属性

CoreImage拥有其内建(built-in)滤镜库的参考文档。你可以向系统查询哪些滤镜是可用的。对于每个滤镜,你都可以获取一个包含了它所有属性的字典,比如它的输入参数啊,默认参数值啊,最小值和最大值啊,显示名等等。


处理图像

CoreImage拥有三个类来支持图像处理:
- CIFilter,是个可变对象,它代表了一种效果。一个滤镜对象至少有一个输入参数并且产生一个输出图像。
- CIImage,是一个不可变对象,它表示一个图像。一个CIImage所需的图像数据,你可以直接合成,或者从一个文件中提供出来,也可以从一个CIFilter对象的输出来获取。
- CIContext,是Core Image绘制滤镜产生的结果的地方。Core Image上下文可以基于CPU或者GPU。

概述

要使用CoreImage,需要导入头文件: CoreImage/CoreImage.h(在iOS中已经不需要手动import了)。先来看一个简单的例子。

    // 创建一个CIContext对象CIContext *context = [CIContext contextWithOptions:nil];// 创建一个CIImage对象。你可以通过各种资源创建CIImageCIImage *image = [CIImage imageWithContentsOfURL:myURL];

这篇关于iOS CoreImage专题(一)—— 概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132045

相关文章

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

Java 多线程概述

多线程技术概述   1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间。线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换、并发执行,一个进程最少有一个线程,线程实际数是在进程基础之上的进一步划分,一个进程启动之后,进程之中的若干执行路径又可以划分成若干个线程 2.线程的调度 分时调度:所有线程轮流使用CPU的使用权,平均分配时间抢占式调度

专题二_滑动窗口_算法专题详细总结

目录 滑动窗口,引入: 滑动窗口,本质:就是同向双指针; 1.⻓度最⼩的⼦数组(medium) 1.解析:给我们一个数组nums,要我们找出最小子数组的和==target,首先想到的就是暴力解法 1)暴力: 2)优化,滑动窗口: 1.进窗口 2.出窗口 3.更新值 2.⽆重复字符的最⻓⼦串(medium) 1)仍然是暴力解法: 2)优化: 进窗口:hash[s[rig

java集合的概述

集合就是一个容器,我们可以把多个对象放入的容器中。就像水杯(假设容量可以不断扩大)一样,你可以往水杯中不断地添加水,既然是水杯,你就不能往里添加沙子,也就是说集合中添加的对象必须是同一个类型的(引用类型,而不能是基本类型)。 看到集合的介绍会让我们的想起数组,那么集合和数组有什么区别呢? 首先,数组的大小是固定的,而集合理论上大小是不限的。 其次,数组既可以存储基本数据类型的数据,也可以存储