基于Qualcomm骁龙处理器的脸部识别开发

本指导致力于帮助开发者使用骁龙脸部识别软件开发工具包来编写安卓应用。

在编写应用前,建议您熟悉编写使用的SnapdragonSDK的应用程序---脸部识别框架,因为面部识别是脸部识别软件工具包扩展附加的功能。

 

本指导参考借鉴:

·        FacialRecognition FAQs

·        FacialProcessing User Guide

·        FacialProcessing FAQs

本指南将逐步创建一个简单的安卓应用程序,首先从一个摄像头预览开始并执行以下操作

·        添加人物

·        更新人物

·        识别人物

·        删除人物

·        序列化集

·        反序列化集

·        重置集

我们将使用Eclipse作为我们的开发平台。根据你的工具的不同,有几个步骤可能也会有所不同

确认环境

·        确保您有一个支持人脸识别功能的Snapdragon的设备

·        为了确认你的设备是兼容的,你必须运行附带的SDK包的测试应用程序。

·        确保您已正确安装安卓开发工具。

安装

 首先创建一个Android项目,步骤是:File -> New -> Other ->AndroidApplication Project。填写一个应用程序名称和项目名称(例如,Facial Recognition Sample App)。完成的步骤的其余部分与你所需的设置。

 

         向导结束后,你应该看到在项目目录中名为“libs”的新建文件夹,如下图所示;如果没有,则自行创建一个。

        下载的SDKSnapdragon包应包括以下文件和目录:

·        Docs

·        Libs

·        Samples

·        Testapp

·        SDKLicense (pdf)

·        SnapdragonSDK_ReleaseNotes_2_1

·        SDK包,复制全部libs (Facial_Recognition)”下的内容到新创建的“libs”文件夹中。

 



·        右击project -> Properties -> JavaBuild Path -> “Go to Libraries tab” -> Add JARs ->从项目的libs文件夹添加sd-sdk-facial-processing.jar

·        转到“Order and Exports”,并检查您刚才添加的.jar文件和Android自己的库。

·        继续之前先把项目清理

设置脸部识别

·        一旦活动被创建了,你必须要执行以下:

·        检查设备上是否支持面部识别功能

·        创建面部识别对象的实例

示例代码


·        如果你能够成功获得面部处理对象的实体,然后做下面的步骤是非常重要的

·        设置识别置信度

·        识别置信度是面部识别引擎识别给定的面部的置信度。

·        设置识别置信的方式,能使脸部引擎忽略任何匹配低于设定置信度阈值的脸型数据。

·        设置处理模式

·        如果使用的是静态图像,使用FP_MODE_STILL

·        如果要使用实时摄像机预览并不断帧处理,使用FP_MODE_VIDEO

 

实施用于处理的图像源

·        有两种方法可以获得图像

·        使用摄像头获取图片

·        从设备图片库里选择一张图片

·        对于实现Android相机的方式请参见面部处理用户指南里“使用面部处理”一节。

·        要拍照,只需要实现一个按钮,点击后能拍摄一张照片。

·        一旦安卓相机设置为按上述指引,便可以在活动中执行以下代码

拍照的示例代码:




·        一旦拍照完成时,便可以使用图像数据来执行各种面部识别功能。

·        您可以参考面部识别示例应用程序来看图像数据的处理方式。

面部识别功能

·        到目前为止,我们已经介绍了如何操作一下事项:

·        初始化面部识别目标

·        设置相机拍照

·        现在你可以使用图像数据和各项面部识别方法来实现面部识别。以下各节包括代码段和说明来帮助您了解如何进行面部识别。

添加人物

·        我们使用该API把“添加一位新人物”到面部识别集里

·        请勿使用此API添加同一个人。如果您尝试添加同一个人那么添加人物将反馈错误代码(查看面部处理常量)。

·        API需要添加人物的脸部指数。

·        当应用程序调用获取面部数据时,面部引擎将索引值分配给处理过的帧中来检测每一面部,一个索引值对应于由获得人脸数据方法返回的人脸数据数组中的索引值。

·        例子1


上面的图片中只有一个脸。因此,该图像获取面部数据将返回1位。数组下标(0)会分配该面部。

·        例子2


上面的图片中有两个脸。因此该图像获取面部数据将返回2位,数组下标(0)会对应于面部1,数组下标(1)对应于面部2

·        如果已成功添加脸部后,添加人物会根据这个脸返回一个独特的个人ID

·        注:面部引擎处理的面部的顺序取决于他们与摄像头传感器的距离。这个排序可以根据面部到传感器距离的变化而逐帧地变化。如果你不希望操作所有的数组,你的应用将需要一个外部的方法来确定数组里哪一个人脸是需要操作的。

·        各种方式来获取用户输入(这完全取决于你的应用程序设计):

        绘制一个面部矩形和周围每个面对应的索引(文本),并让用户输入他们想要使用的面部索引。

·        采取从屏幕里触摸输入坐标,并检查它是否位于面部矩形内

·        在框架里添加所有的面部

从上面例子2里添加人脸2到认识集里的示例代码:



更新人物

·        我们使用该API来“更新一个现有的人物”到面部识别集里

·        API有两个参数

·        个人ID:这个是在执行添加人脸前,成功添加人物后会返回一个唯一的ID

·        人脸索引:跟上面提到的“添加人物”的概念一样

例子:

·        我们将把一个不同的女性脸更新到之前已经加到例子2里的人脸2


·        如果人物成功更新,个人API会返回值0(成功)。

·        注意:每个人最多能更新十个脸。否则会导致内部错误。

在面部识别集里,样品开始用新的人脸更新一个现有的人物(面部2)的示例代码:


识别人物

·        我们将使用该API来识别一个人物,无论该人物有没有添加到面部识别集中

·        为了识别一个人,将会:

·        可以在指定FACE_IDENTIFICATION枚举中获取面部数据。

·        也可以在没参数情况下获取面部数据,这样将在所有面部数据里让面部引擎去处理图像

·        例子:

·        该例子中,我们假设面部2是先前添加的,面部1还没有添加到面部识别集中。

 

在给定图像里识别面部的示例代码:



删除人物

·        使用该方法从面部识别集里删除特定人物。

·        删除一个人物会清除所有该人物先前储存图像数据。

·        API获取一个该删除人物的有效ID

删除先前添加的脸部2的示例代码:


·        当删除任务操作承购后将返回TRUE,否则将返回FALSE

重置集

·        使用该方法去删除或清空全部的识别集

·        注意:这个是不可逆的过程

重置全部集的示例代码:


·        如果重置集成功后将会返回TRUE,否则返回FALSE

序列化和反序列化集

·        在一个实体面部处理对象是在范围内,则面部识别集将通过面部引擎来存储到临时存储器缓冲器里。要重新使用面部识别集就需要序列化集,并保存到永久内存存储。

·        一旦面部处理的对象是早在范围内,您可以通过调用反序列化识别集API来加载现有的(保存)专辑到内存中。

·        序列化识别集API返回到可存储到永久存储器的字节数组。

·        有许多方法可以存储该字节数组。其中一种方法是使用安卓共享参数。

·        提示:在集中做任何改变时,序列化和存储集总会是一个好办法。这将有助于在应用程序从前端意外删除时,防止用户的数据丢失。

序列化集并使用共享参数存储的示例代码:


一旦应用程序返回的时候,我们可以反序列化再利用集。

进行反序列化再利用集的示例代码:



示例代码的使用将服从Snapdragon SDK协议条款。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值