轮廓检测_iOS 14的新功能:Vision轮廓检测

本文介绍了iOS 14中Vision框架新增的轮廓检测功能,通过示例展示了如何在SwiftUI应用中检测硬币的轮廓,并利用Core Image预处理图像以提高检测效果。文章详细解释了轮廓检测的原理和使用方法,以及如何在图像上绘制轮廓。
摘要由CSDN通过智能技术生成

苹果的WWDC 2020(线上版)炸裂开幕。惊喜很多(延伸阅读:Apple’s own silicon chips for Macs),包括SwiftUI,ARKit,PencilKit,Create ML以及Core ML。但对我来说,其中最突出的还是计算机视觉处理。

苹果的Vision框架得到了更完善的支援,推出了一系列令人兴奋的新API,以相当简单直接的方式执行复杂且关键的计算机视觉算法。

从iOS14开始,Vision framwork开始支持手势和身体姿势估计、光流、轨迹检测和轮廓检测。

虽然我们将在以后的某个时间深入了解这些问题,但现在,让我们更深入地研究一个特别有趣的附加功能:轮廓检测Vision请求。

我们的目标

  • 理解Vision的轮廓检测请求。
  • 在一个iOS 14 SwiftUI应用程序中运行它来检测硬币的轮廓。
  • 利用Core Image过滤器在将图像传递到Vision请求之前对图像进行预处理,从而简化轮廓。为了减少纹理噪声,我们将对图像进行遮罩。

Vision轮廓检测

轮廓检测识别图像中物体边缘的轮廓。本质上,它连接所有具有相同颜色或强度的连续点。

此计算机视觉任务对于形状分析、边缘检测非常有用,并且在需要在图像中找到类似类型的物体时非常有用。

硬币检测和分割是OpenCV中一个相当常见的用例,现在通过使用Vision的新VNDetectContoursRequest,我们可以在iOS应用程序中轻松地执行相同的操作(不需要第三方库)。

为了处理图像或帧,Vision框架需要一个VNRequest,它被传递到图像请求处理器或连续请求处理器中。我们得到一个VNObservation对象。

你可以根据执行的请求类别,来决定使用哪个VNObservation子类。在我们这个例子中,我们将使用VNContoursObservation,它提供所有从图像中检测到的轮廓。

我们可以从VNContoursObservation查看以下属性:

  • normalizedPath:返回标准化坐标中检测到的轮廓的路径。我们必须把它转换成UIKit坐标,我们很快就会看到怎么做。
  • contourCount:Vision请求返回的检测到的轮廓的数量。
  • topLevelContours:未包含在任何轮廓内的VNContours数组。
  • contour(at:):使用这个方法,我们可以传递索引或者IndexPath来访问子轮廓。
  • confidence:整个VNContoursObservation的置信度。
注意:使用 topLevelContours访问子轮廓可以很方便地在最终的观测结果中修改/删除它们。

现在已经对Vision轮廓检测请求有了一个概念,让我们来看看它在iOS 14应用程序中是如何工作的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值