Android识别图片中脸部信息

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

在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...

目录
相关文章
|
4月前
|
存储 缓存 编解码
Android经典面试题之图片Bitmap怎么做优化
本文介绍了图片相关的内存优化方法,包括分辨率适配、图片压缩与缓存。文中详细讲解了如何根据不同分辨率放置图片资源,避免图片拉伸变形;并通过示例代码展示了使用`BitmapFactory.Options`进行图片压缩的具体步骤。此外,还介绍了Glide等第三方库如何利用LRU算法实现高效图片缓存。
85 20
Android经典面试题之图片Bitmap怎么做优化
|
8月前
|
Java Android开发
android 下载图片的问题
android 下载图片的问题
54 3
|
3月前
|
Java Unix Linux
Android Studio中Terminal运行./gradlew clean build提示错误信息
遇到 `./gradlew clean build`命令执行出错时,首先应检查错误信息的具体内容,这通常会指向问题的根源。从权限、环境配置、依赖下载、版本兼容性到项目配置本身,逐一排查并应用相应的解决措施。记住,保持耐心,逐步解决问题,往往复杂问题都是由简单原因引起的。
458 2
|
5月前
|
数据处理 开发工具 数据安全/隐私保护
Android平台RTMP推送|轻量级RTSP服务|GB28181接入之文字、png图片水印的精进之路
本文探讨了Android平台上推流模块中添加文字与PNG水印的技术演进。自2015年起,为了满足应急指挥及安防领域的需求,逐步发展出三代水印技术:第一代为静态文字与图像水印;第二代实现了动态更新水印内容的能力,例如实时位置与时间信息;至第三代,则优化了数据传输效率,直接使用Bitmap对象传递水印数据至JNI层,减少了内存拷贝次数。这些迭代不仅提升了用户体验和技术效率,也体现了开发者追求极致与不断创新的精神。
|
5月前
|
自然语言处理 定位技术 API
Android经典实战之如何获取图片的经纬度以及如何根据经纬度获取对应的地点名称
本文介绍如何在Android中从图片提取地理位置信息并转换为地址。首先利用`ExifInterface`获取图片内的经纬度,然后通过`Geocoder`将经纬度转为地址。注意操作需在子线程进行且考虑多语言支持。
309 4
|
5月前
|
XML 前端开发 Android开发
Android经典实战之Kotlin中实现圆角图片和圆形图片
本文介绍两种实现圆角图像视图的方法。第一种是通过自定义Kotlin `AppCompatImageView`,重写`onDraw`方法使用`Canvas`和`Path`进行圆角剪裁。第二种利用Android Material库中的`ShapeableImageView`,简单配置即可实现圆角效果。两种方法均易于实现且提供动态调整圆角半径的功能。
107 0
|
6月前
|
机器学习/深度学习 人工智能 文字识别
文本,文字扫描01,OCR文本识别技术展示,一个安卓App,一个简单的设计,文字识别可以应用于人工智能,机器学习,车牌识别,身份证识别,银行卡识别,PaddleOCR+SpringBoot+Andr
文本,文字扫描01,OCR文本识别技术展示,一个安卓App,一个简单的设计,文字识别可以应用于人工智能,机器学习,车牌识别,身份证识别,银行卡识别,PaddleOCR+SpringBoot+Andr
|
7月前
|
JSON 编解码 Apache
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
81 1
|
7月前
|
Java Android开发
18. 【Android教程】图片控件 ImageView
18. 【Android教程】图片控件 ImageView
123 4
|
7月前
|
存储 Android开发
详细解读Android获取已安装应用信息(图标,名称,版本号,包)
详细解读Android获取已安装应用信息(图标,名称,版本号,包)
113 0

热门文章

最新文章