网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

详解android人脸检测你一定会遇到的坑-创新互联

笔者今年做了一个和人脸有关的android产品,主要是获取摄像头返回的预览数据流,判断该数据流是否包含了人脸,有人脸时显示摄像头预览框,无人脸时摄像头预览框隐藏,看上去这个功能并不复杂,其实在开发过程中,遇到的问题也不多,全部都处理了,在正式推出前,这个产品在公司内部也测试了几个月,也没发现bug,但最近实施人员,在客户公司做实施时,反馈回来各种问题,这些问题有部分是程序bug,也有一部分是和硬件有关,因为测试环境有限,笔者无法对各种型号,各个厂家的硬件进行测试,这篇文章主要是记录,摄像头给我们带来的一些坑,分享给涉及到人脸开发的朋友,让大家少走弯路。

弥渡ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

一:概述

Android SDK 中支持人脸检测,它提供了一个直接在位图上进行人脸检测的方法,这个 API 是android.media.FaceDetector,源文件路径是:


frameworks/base/media/java/android/media/FaceDetector.java


调用 findFaces 方法就可进行人脸检测,该方法返回检测到的人脸总数,并且会将每个”人脸”的信息保存在FaceDetector.Face 的数组中。每个 Face 都包含下面几点信息:

  1. 该 Face 为人脸的可信度.取值范围是 0~1,大于 0.3 则表明可信度较高。
  2. 双眼之间的距离
  3. 双眼中点的 x,y 坐标
  4. 脸部的欧拉角度,可用于判断抬头,侧脸的角度等。

识别流程是这样的:


1. 读取一张图片至 Bitmap,且该 Bitmap 必须是 565 格式。


2. 调用 findFaces 方法分析 Bitmap(注意待分析的 Bitmap 宽度必须是偶数),将探测到的人脸数据存储在一个FaceDetector.Face 数组中,并返回检测到的人脸总数。Android SDK 中的 FaceDetector 介绍

android有原生的api做人脸检测,通过android.media.FaceDetector来检测bitmap是否包含人脸,android.media.FaceDetector.Face来检测人脸位置信息,我们需要在activity中实现Carema.PreviewCallBack接口,该接口有一个onPreviewFrame方法,这个方法返回摄像头实时图像的数据流,由于这个方法返回的数据流时nv21格式,我们需要转换bitmap才能进行人脸检测,转换过程如下:byte[] --> YuvImage --> ByteArrayOutputStream --> byte[] -->  bitmap ,具体转换的代码如下:

Camera.Size size = mtCamera.getParameters().getPreviewSize();
YuvImage yuvImage = new YuvImage(mData, ImageFormat.NV21, size.width, size.height, null);
yuvImage.compressToJpeg(new Rect(0, 0, size.width, size.height), 100, mBitmapOutput);
options.inPreferredConfig = Bitmap.Config.RGB_565;
bitmap = BitmapFactory.decodeByteArray(mBitmapOutput.toByteArray(), 0, mBitmapOutput.toByteArray().length, options);
mBitmapOutput.reset();
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), mMatrix, false);

文章名称:详解android人脸检测你一定会遇到的坑-创新互联
URL分享:http://bjjierui.cn/article/dojhco.html

其他资讯