Swift之Vision 图像识别框架
- 2017年苹果大大又推出了新机型iPhone 8和iPhone 8Plus, 这还不是重点, 重点是那一款价值9000RMB的iPhone X, 虽说网上吐槽声从未停止过, 但是我觉得还是不错的哈!
- 软件方面, 苹果大大也推出了iOS 11, 经本人iPhone 7手机亲测, 耗电快外加通知栏改不完的bug
- 当然了随着iOS 11的推出, 也随之推出了一些新的API,如:
ARKit、Core ML、FileProvider、IdentityLookup、Core NFC、Vison等。 - 这里我们还要说的就是Apple 在 WWDC 2017 推出的图像识别框架–
Vison官方文档 - Demo地址
一. Vision应用场景
Face Detection and Recognition: 人脸检测
- 支持检测笑脸、侧脸、局部遮挡脸部、戴眼镜和帽子等场景,可以标记出人脸的矩形区域
- 可以标记出人脸和眼睛、眉毛、鼻子、嘴、牙齿的轮廓,以及人脸的中轴线
Image Alignment Analysis: 图像对比分析Barcode Detection: 二维码/条形码检测
- 用于查找和识别图像中的条码
- 检测条形码信息
Text Detection: 文字检测
- 查找图像中可见文本的区域
- 检测文本区域的信息
Object Detection and Tracking: 目标跟踪
- 脸部,矩形和通用模板
二. Vision支持的图片类型
1. Objective-C中
CVPixelBufferRefCGImageRefCIImageNSURLNSData
2. Swift中
CVPixelBufferCGImageCIImageURLData
具体详情可在
Vision.framework的VNImageRequestHandler.h文件中查看
三. Vision之API介绍
- 使用在
vision的时候,我们首先需要明确自己需要什么效果,然后根据想要的效果来选择不同的类 - 给各种功能的
Request提供给一个RequestHandler Handler持有需要识别的图片信息,并将处理结果分发给每个Request的completion Block中- 可以从
results属性中得到Observation数组 observations数组中的内容根据不同的request请求返回了不同的observation- 每种
Observation有boundingBox,landmarks等属性,存储的是识别后物体的坐标,点位等 - 我们拿到坐标后,就可以进行一些UI绘制。
1. RequestHandler处理请求对象
VNImageRequestHandler: 处理与单个图像有关的一个或多个图像分析请求的对象
- 一般情况下都是用该类处理识别请求
- 初始化方法支持
CVPixelBuffer,CGImage,CIImage,URL,Data
VNSequenceRequestHandler: 处理与多个图像序列有关的图像分析请求的对象
- 目前我在处理物体跟踪的时候使用该类
- 初始化方法同上
2. VNRequest介绍
VNRequest: 图像分析请求的抽象类, 继承于NSObjectVNBaseImageRequest: 专注于图像的特定部分的分析请求
- 具体分析请求类如下:

3. VNObservation检测对象
VNObservation: 图像分析结果的抽象类, 继承与NSObject
- 图像检测结果的相关处理类如下:

四. 实战演练
1. 文本检测
- 方式一: 识别出具体的每一个字体的位置信息
- 方式二: 识别一行字体的位置信息
- 如图效果:


1.1 现将图片转成初始化VNImageRequestHandler对象时, 可接受的的CIImage
//1. 转成ciimage
guard let ciImage = CIImage(image: image) else { return }
1.2 创建处理请求的handle
- 参数一: 图片类型
- 参数二: 字典类型, 有默认值为[:]
let requestHandle = VNImageRequestHandler(ciImage: ciImage, options: [:])
1.3 创建回调闭包
- 两个参数, 无返回值
VNRequest: 是所有请求Request的父类
public typealias VNRequestCompletionHandler = (VNRequest, Error?) -> Swift.Void
- 具体代码如下:
//4. 设置回调

最低0.47元/天 解锁文章
798

被折叠的 条评论
为什么被折叠?



