Android识别图片中脸部信息

在Android开发中,大部分应用都是以用户为第一位,用户都有自己的个人中心,用来展示自己的信息,头像无疑是展示自己最直观的方式,随着各种政策的出台,实名认证,真人头像变得尤为重要,如果要求上传真人头像,那就需要后台做校验,判断是不是真人,如果真人审核,那工作量是非人力所能为的,这时候就用到各种识别图片的算法,来做这些工作了,这里主要介绍Android里面谷歌开放的图片脸部识别的API。

 

上代码:

 

依赖:

 

dependencies {
    compile 'com.google.android.gms:play-services-vision:8.4.0'
}

 

import com.google.android.gms.vision.Frame;
import com.google.android.gms.vision.face.Face;
import com.google.android.gms.vision.face.FaceDetector;

  private Bitmap getFaceBitmap(Bitmap bmp, Context context) {

        FaceDetector faceDetector = new
                FaceDetector.Builder(context).setTrackingEnabled(false)
                .build();
        if (!faceDetector.isOperational()) {
            System.out.println("Face detector not working");
            return null;
        }
        Bitmap faceBitmap = null;

        Frame frame = new Frame.Builder().setBitmap(bmp).build();

        SparseArray<Face> faces = faceDetector.detect(frame);
        Log.e("RoungImage", "00100bmp.getWidth" + bmp.getWidth());
        Log.e("RoungImage", "00100bmp.getHeight" + bmp.getHeight());
        Log.e("RoungImage", "006faces:" + faces.size());
        for (int i = 0; i < faces.size(); i++) {
            Face thisFace = faces.valueAt(i);

            int faceWidth = (int) thisFace.getWidth();
            Log.e("RoungImage", "007faceWidth:" + faceWidth);
            int faceHeight = (int) thisFace.getHeight();
            Log.e("RoungImage", "008faceHeight:" + faceHeight);
            int x1 = (int) thisFace.getPosition().x;
            Log.e("RoungImage", "009x1:" + x1);
            int y1 = (int) thisFace.getPosition().y;
            Log.e("RoungImage", "0010y1" + y1);

            faceBitmap = Bitmap.createBitmap(bmp,
                    x1 > (faceWidth / 2) ? (x1 - faceWidth / 2) : 0,
                    y1 > (faceHeight / 2) ? (y1 - faceHeight / 2) : 0,
                    1.5 * faceWidth < bmp.getWidth() ? (int) (1.5 * faceWidth) : bmp.getWidth(),
                    1.5 * faceHeight < bmp.getWidth() ? (int) (1.5 * faceHeight) : bmp.getHeight());

        }
        if (faceBitmap != null) return faceBitmap;
        return bmp;
    }

  

 

这里测试两张图片,识别图片中的脸部信息,图片如下:

 

 

 

 

识别出各种坐标以后,大致是这样的:

 

 

精确度还是很不错的。

这里只是打印一下坐标,实际还有很多其他的API,eg:眼睛是否睁开,脸部是否微笑,微笑的概率,and so on...

时间: 2024-12-04 02:20:55

Android识别图片中脸部信息的相关文章

rfid-请问Android开发中一般带有NFC功能的手机能否实现NFID识别入场证id信息

问题描述 请问Android开发中一般带有NFC功能的手机能否实现NFID识别入场证id信息 请问Android开发中一般带有NFC功能的手机能否实现NFID识别入场证id信息 是否需要相应的物理模块? 比如在应用中实现读取员工卡的id来实现某个app的登陆功能. 解决方案 已解决. 从硬件厂家要了驱动接口

Android Mms之:接收信息流程(图文详解)_Android

信息的接收工作是由底层来完成的,当有一个 新的信息时底层完成接收后会以Intent的方式来通知上层应用,信息的相关内容也包含在Intent当中,Android所支持的信息Intent都定义在android.provider.Telephony.Intents里面.短信的接收 短信接收,对于上层应用程序来讲就是要处理广播事件SMS_RECEIVED_ACTION,它是由Frameworks发出告诉上层有新的SMS已收到.在Mms中,是由PrivilegedSmsReceiver来处理,它收到SMS

使用 OpenCV 识别图片中的猫咪

你知道 OpenCV 可以识别在图片中小猫的脸吗?而且是拿来就能用,不需要其它的库之类的. 之前我也不知道. 但是在 Kendrick Tan 曝出这个功能后,我需要亲自体验一下--去看看到 OpenCV 是如何在我没有察觉到的情况下,将这一个功能添加进了他的软件库(就像一只悄悄溜进空盒子的猫咪一样,等待别人发觉). 下面,我将会展示如何使用 OpenCV 的猫咪检测器在图片中识别小猫的脸.同样的,该技术也可以用在视频流中. 使用 OpenCV 在图片中检测猫咪 如果你查找过 OpenCV 的代

Android Mms之:接收信息流程(图文详解)

信息的接收工作是由底层来完成的,当有一个 新的信息时底层完成接收后会以Intent的方式来通知上层应用,信息的相关内容也包含在Intent当中,Android所支持的信息Intent都定义在android.provider.Telephony.Intents里面.短信的接收 短信接收,对于上层应用程序来讲就是要处理广播事件SMS_RECEIVED_ACTION,它是由Frameworks发出告诉上层有新的SMS已收到.在Mms中,是由PrivilegedSmsReceiver来处理,它收到SMS

如何利用ABBYY FineReader识别图片中的文本

作为一款OCR光学字符识别软件,ABBYY FineReader能够快速方便地将扫描纸质文档.PDF文件和数码相机的图像转换成可编辑.可搜索的文本,让电脑处理更具效率,摆脱从前的烦恼,告别耗时费力的手动输入和文件编辑.今天就给大家分享一篇别人使用ABBYY FineReader识别图片中文本的案例,看别人是如何利用ABBYY FineReader提高效率的: 昨天在微博收藏了几张图片格式的中英文对照的色谱,以后翻译的时候可能会用到,因此想到通过OCR(光学文字识别)识别处理后导入CAT中备用.之

识别出脸部以及给脸部打马赛克

识别出脸部以及给脸部打马赛克   原始图片 & 打马后的图片     说明 1. 通过CIDetector来识别出脸部获取相关数据 2. 将CoreImage坐标转换为UIKit坐标 3. 将脸部区域进行截图 4. 将截图进行打马处理(各位喜闻乐见^_^)   核心源码 https://github.com/YouXianMing/FaceDetection // // UIImageView+FaceDetect.h // FaceDetectionExample // // Created

实现扫描识别车牌号码或者识别图片中的车牌号码的demo?

问题描述 实现扫描识别车牌号码或者识别图片中的车牌号码的demo? 哪位大神有实现扫描识别车牌号码或者识别图片中的车牌号码的demo? 望请发给我一份,要求识别率能达到80%以上,必有重谢. 解决方案 http://m.blog.csdn.net/blog/Linoi/17761655http://download.csdn.net/detail/haowaj/3153245 重谢不需要,如果满意点下右边的采纳就可以了.如果还有问题,可以继续开贴提问 如果采纳本回答,还可以给你一些打包好的源代码

急求实现扫描识别车牌号码或者识别图片中的车牌号码的demo?

问题描述 急求实现扫描识别车牌号码或者识别图片中的车牌号码的demo? 哪位大神有实现扫描识别车牌号码或者识别图片中的车牌号码的demo? 望请发给我一份,要求识别率能达到80%以上,必有重谢. 解决方案 http://m.blog.csdn.net/blog/Linoi/17761655 解决方案二: http://download.csdn.net/detail/haowaj/3153245 重谢不需要,如果满意点下右边的采纳就可以了.如果还有问题,可以继续开贴提问

图像处理-android获取图像的yuv信息

问题描述 android获取图像的yuv信息 本人菜鸟.建了一个app能调用系统相机,想在缩略图时获取图像yuv信息,最后得到图像亮度y信息.麻烦大神帮助一下 解决方案 YUV图像