[Xcode10 实际操作]九、实用进阶-(18)图像人脸识别:对图片中的人像进行面部检测

本文将演示对图片中的人像,进行面部检测。

在项目导航区,打开视图控制器的代码文件【ViewController.swift】

 1 import UIKit
 2 //导入要使用的CoreImage框架
 3 //该框架提供了强大和高效的图片处理功能。
 4 //用来对基于像素的图像进行分析、操作和特效处理
 5 import CoreImage
 6
 7 class ViewController: UIViewController {
 8
 9     override func viewDidLoad() {
10         super.viewDidLoad()
11         // Do any additional setup after loading the view, typically from a nib.
12
13         //将当前视图控制器的背景颜色设置为黑色,以突出显示图像视图
14         self.view.backgroundColor = UIColor.black
15
16         //从项目资源文件夹中,读取一张图片资源。
17         let image = UIImage(named: "Picture")
18         //创建一个图像视图,并知指定需要显示的图片
19         let imageView = UIImageView(image: image)
20         //设置图像视图的中心点坐标,位于(160,260)
21         imageView.center = CGPoint(x: 160, y: 260)
22         //将图像视图,添加到当前视图控制器的根视图。
23         self.view.addSubview(imageView)
24
25         //初始化一个CoreImage图像对象,并加载之前导入的图片
26         let ciImage = CIImage(image: image!)
27         //创建一个上下文对象,该对象是对图像进行处理的具体对象
28         let ciContext: CIContext = { return CIContext(options: nil) }()
29         //创建一个检测对象,并设置检测类型为面部检测,检测精准度为高精度。
30         //该对象使用图像处理机制,去搜索并识别在图片或影片中,
31         //明显存在的面部、矩形、条形码等对象。
32         let ciDetector = CIDetector(ofType: CIDetectorTypeFace, context: ciContext,
33                                     options: [CIDetectorAccuracy: CIDetectorAccuracyHigh])
34
35         //获得图像的尺寸信息
36         let ciImageSize = ciImage!.extent.size
37         //CoreImage框架坐标系统的原点,位于屏幕左下角。
38         //UIView坐标系统的原点,位于屏幕左上角。
39         //所以需要对识别到的面部区域,进行上下反转操作
40         var transform = CGAffineTransform.identity
41         //设置在垂直方向上,进行翻转操作。
42         transform = transform.scaledBy(x: 1.0, y: -1.0)
43         //然后设置在垂直方向上移动的距离。
44         transform = transform.translatedBy(x: 0, y: ciImageSize.height * -1)
45
46         //创建一个数组,用来存储检测到的所有面部信息。
47         let features: [CIFeature]! = ciDetector!.features(in: ciImage!)
48         //添加一个循环语句,对数组进行操作
49         for feature in features
50         {
51             //对检测到的面部区域,进行反转操作。
52             //使面部区域能够显示在图像视图的正确位置。
53             let frame = feature.bounds.applying(transform)
54             //初始化一个图像对象,并设置其位置和尺寸与面部区域相同
55             let faceView = UIView(frame: frame)
56             //设置视图层的边框宽度为2
57             faceView.layer.borderWidth = 2
58             //设置视图层的边框颜色为白色
59             faceView.layer.borderColor = UIColor.white.cgColor
60
61             //将视图添加到当前视图控制器的根视图
62             imageView.addSubview(faceView)
63         }
64     }
65
66     override func didReceiveMemoryWarning() {
67         super.didReceiveMemoryWarning()
68         // Dispose of any resources that can be recreated.
69     }
70 }

原文地址:https://www.cnblogs.com/strengthen/p/10090436.html

时间: 2024-10-13 05:33:57

[Xcode10 实际操作]九、实用进阶-(18)图像人脸识别:对图片中的人像进行面部检测的相关文章

[Xcode10 实际操作]九、实用进阶-(25)使用Storyboard(故事版)的约束功能,使项目快速适配各种分辨率的设备

本文将演示使用故事版的约束功能,使项目快速适配各种分辨率的设备. 在项目导航区打开并编辑主故事版[Main.storyboard]. 在当前故事版中,已经存在一个适配4寸屏幕的界面, 点击设备名称,更改设备类型.在弹出的模拟器列表中,选择一款拥有4.7寸屏幕的模拟器. 然后通过系统提供的约束功能,对各尺寸屏幕进行适配. 在故事版文档框架区中的[View Controller],点击显示[MainView]视图下的所有子元素. 该视图是添加的自定义视图,尺寸与根视图相同,并且包含了页面中的所有元素

[Xcode10 实际操作]九、实用进阶-(9)陀螺仪设备的使用

本文将演示陀螺仪设备的使用. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 //导入需要用到的CoreMotion框架 3 //该框架不仅提供实时的加速度值,还提供设备的三维姿态信息. 4 import CoreMotion 5 6 class ViewController: UIViewController { 7 8 //添加一个属性,该属性是框架提供的一个运动管理类. 9 //然后由这个类,去管理三种和运动相关的数据封

[Xcode10 实际操作]九、实用进阶-(17)使用CGBlendMode改变UIImage颜色,实现对图片进行混合着色

本文将演示如何使用CGBlendMode改变UIImage颜色,实现对图片进行混合着色. 在项目文件夹[DemoApp]上点击鼠标右键 ->[New File]创建一个扩展文件->模板选择窗口:[Swift File]->[Next] ->[Save As]:ExtensionUIImage.swift->保存默认的存储位置点击[Create] 在[ExtensionUIImage.swift]添加一个针对UIImage类的扩展. 扩展可以向一个已有的类.结构体或枚举类型添加

[Xcode10 实际操作]九、实用进阶-(8)实现App的Setting设置:添加和读取程序的配置信息

本文将演示如何实现添加和读取程序的配置信息. 在项目文件夹[DemoApp]上点击鼠标右键->[New File]创建一个设置束文件 ->[Settings Bundle]设置束: 如果想要通过设备的[设置]程序,来展示自定义的的偏好设置,必须先准备好一个设置束 ->[Next]->[Save As]:Setting.bundle保持默认的配置. ->保存默认的存储位置点击[Create] 在项目导航区多了一个设置束文件[Setting.bundle]. 点击下拉箭头,查看设

[Xcode10 实际操作]九、实用进阶-(10)定位设备的使用

本文将演示定位设备的使用. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 //导入需要用到的定位CoreLocation框架 3 //该框架可以利用三种技术来实现定位: 4 //1.全球卫星定位系统 5 //2.蜂窝基站三角网定位 6 //3.无线网络定位服务 7 //其中,全球卫星定位系统是最精确的. 8 import CoreLocation 9 10 //添加一个地理定位的代理协议CLLocationManagerDe

[Xcode10 实际操作]九、实用进阶-(27)字符串文件(Localizable.strings)的本地化

本文将演示字符串文件(Localizable.strings)的本地化. 在项目[DemoApp]文件夹下点击鼠标右键,弹出右键菜单 ->[New File]新建文件命令,创建一个字符串文件. ->[Strings File]字符串文件->[Next] ->[Save As]:Localizable.strings.文件名是固定的[Localizable.strings],请不要用别的名称. ->保持默认的存储位置,点击[Create] 点击[显示或隐藏检查器]图标,打开右侧

[Xcode10 实际操作]九、实用进阶-(32)项目的打包上传和提交审核以及下架处理

本文将演示如何将一个应用程序进行打包上传,并提交审核以及下架处理. 点击项目[DemoApp]->[Build Settings]编译设置->[Provisioning Profile]证书设置区域. 在[苹果开发者管理后台],创建应用程序的开发证书和发布证书. [Debug]:首先设置应用程序的开发证书,有了开发证书后,可以在真机设备上运行和测试应用程序. 在弹出的证书列表中,列出了所有的开发证书和发布证书,这里选择开发证书. [Release]:设置应用程序的发布证书,发布证书可以让您对应

[Xcode10 实际操作]九、实用进阶-(7)使用Xcode的版本管理功能(SCM)

本文将演示系统的版本控制功能. 软件配置管理(SCM):Software configuration management 是指通过执行版本控制.变更控制的规程,以及使用合适的配置管理软件, 来保证所有配置项的完整性和可跟踪性.配置管理是对工作成果的一种有效保护. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 添加一行代码,在控制台打印输出日志. 1 import UIKit 2 3 class ViewController: UIViewControlle

[Xcode10 实际操作]九、实用进阶-(26)对Storyboard(故事版)中的文字标签(Label)进行本地化处理

对Storyboard(故事版)中的文字标签(Label)进行本地化处理. 点击项目名称[DemoApp]进入项目信息面板. [Build Setting]->[Localizations]本地化下方的[+]弹出语言列表 ->选择[Chinese(Simplified)(zh-Hans)]简体中文 ->点击取消选择[LaunchScreen.storyboard]启动视图左侧的复选框, 只保留对[Main.storybooard]主故事板进行本地化处理. ->点击[Finish]完