iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >在Android 开发中使用camera怎么实现一个人脸识别功能
  • 538
分享到

在Android 开发中使用camera怎么实现一个人脸识别功能

androidcamera 2023-05-31 14:05:11 538人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关在Android 开发中使用camera怎么实现一个人脸识别功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Android camera实时预览 实时处理,面部

这篇文章将为大家详细讲解有关在Android 开发中使用camera怎么实现一个人脸识别功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Android camera实时预览 实时处理,面部认证。

预览操作是网友共享的代码,我在继承SurfaceView 的CameraSurfaceView 中加入了帧监听事件,每次预览监听前五个数据帧,在处理做一个面部识别。

先看目录关系

在Android 开发中使用camera怎么实现一个人脸识别功能

  • 自定义控件CameraSurfaceView.java
  • 自定义接口方法Camerainterface.java
  • CameraActivity预览界面。

CameraSurfaceView.Java

package com.centaur.camera.preview;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.ImageFORMat;import android.graphics.Matrix;import android.graphics.PixelFormat;import android.graphics.Rect;import android.graphics.YuvImage;import android.hardware.Camera;import android.util.AttributeSet;import android.util.Log;import android.view.SurfaceHolder;import android.view.SurfaceView;import com.centaur.camera.camera.CameraInterface;import java.io.ByteArrayOutputStream;public class CameraSurfaceView extends SurfaceView implements SurfaceHolder.Callback, Camera.PreviewCallback{  private static final int FACENUM = 5;  private static final String TAG = "yanzi";  CameraInterface mCameraInterface;  Context mContext;  SurfaceHolder mSurfaceHolder;  private boolean isFinish;  //传输五个bitmap数组  Bitmap [] bitmaps = new Bitmap[5];  int number = 0;//作为计数器用  OnFaceCollectListener onFaceCollectListener = null;  public CameraSurfaceView(Context context, AttributeSet attrs) {    super(context, attrs);    mContext = context;    mSurfaceHolder = getHolder();    mSurfaceHolder.setFormat(PixelFormat.TRANSPARENT);//translucent半透明 transparent透明    mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);    mSurfaceHolder.addCallback(this);  }  @Override  public void surfaceCreated(SurfaceHolder surfaceHolder) {    Log.i(TAG, "surfaceCreated...");  }  @Override  public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {    Log.i(TAG, "surfaceChanged...");  }  @Override  public void surfaceDestroyed(SurfaceHolder surfaceHolder) {    Log.i(TAG, "surfaceDestroyed...");    CameraInterface.getInstance().doStopCamera();  }  public SurfaceHolder getSurfaceHolder(){    return mSurfaceHolder;  }    public static interface OnFaceCollectListener {        void OnFaceCollected(Bitmap[] bitmaps);        void OnFaceCollectStart(boolean isStart);  }    public void setOnFaceCollectListener(OnFaceCollectListener onFaceCollectListener){    if(onFaceCollectListener!=null){      this.onFaceCollectListener = onFaceCollectListener;    }  }    @Override  public void onPreviewFrame(byte[] bytes, Camera camera) {    if(number<FACENUM){      //收集      //判断监听器 开始      if(onFaceCollectListener!=null){        onFaceCollectListener.OnFaceCollectStart(true);        //有byte数组转为bitmap        bitmaps[number] = byte2bitmap(bytes,camera);        Log.d("ceshiTian","********收集了"+number+"个************");        number = number+1;        if(number==5){          Log.d("ceshiTian","********收集够5个************");          //提交          onFaceCollectListener.OnFaceCollected(bitmaps);        }      }    }else {      //不做操作      onFaceCollectListener.OnFaceCollectStart(false);      onFaceCollectListener.OnFaceCollected(null);    }  }  private Bitmap byte2bitmap(byte[] bytes, Camera camera) {    Bitmap bitmap = null;    Camera.Size size = camera.getParameters().getPreviewSize(); // 获取预览大小    final int w = size.width; // 宽度    final int h = size.height;    final YuvImage image = new YuvImage(bytes, ImageFormat.NV21, w, h,        null);    ByteArrayOutputStream os = new ByteArrayOutputStream(bytes.length);    if (!image.compressToJpeg(new Rect(0, 0, w, h), 100, os)) {      return null;    }    byte[] tmp = os.toByteArray();    bitmap = BitmapFactory.decodeByteArray(tmp, 0, tmp.length);    Matrix matrix = new Matrix();    matrix.setRotate(-90);    bitmap = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);    return bitmap;  }}

--结束END--

本文标题: 在Android 开发中使用camera怎么实现一个人脸识别功能

本文链接: https://www.lsjlt.com/news/226132.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在Android 开发中使用camera怎么实现一个人脸识别功能
    这篇文章将为大家详细讲解有关在Android 开发中使用camera怎么实现一个人脸识别功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Android camera实时预览 实时处理,面部...
    99+
    2023-05-31
    android camera
  • 怎么在python中使用LBPH实现人脸识别
    怎么在python中使用LBPH实现人脸识别?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整...
    99+
    2023-06-14
  • 使用python怎么实现一个人脸识别打卡系统
    使用python怎么实现一个人脸识别打卡系统?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开...
    99+
    2023-06-14
  • 怎么在Android中利用orc实现一个文字识别功能
    这篇文章给大家介绍怎么在Android中利用orc实现一个文字识别功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、什么是orcorc是指利用光学字符识别(ORC全称:Optical Character Recog...
    99+
    2023-05-31
    android orc roi
  • 怎么在Android应用中实现一个手势操作识别功能
    今天就跟大家聊聊有关怎么在Android应用中实现一个手势操作识别功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先,在Android系统中,每一次手势交互都会依照以下顺序执行。...
    99+
    2023-05-31
    android roi
  • Android中怎么实现一个图片文字识别功能
    Android中怎么实现一个图片文字识别功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。添加依赖implementation 'com.rmtheis:...
    99+
    2023-06-20
  • Android开发中怎么实现一个分享功能
    Android开发中怎么实现一个分享功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实现代码如下所示;Intent email = new Intent(android....
    99+
    2023-05-31
    android roi
  • 在Android 开发中使用Activity怎么实现一个隐式跳转功能
    在Android 开发中使用Activity怎么实现一个隐式跳转功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。创建第二个activity就是创建一个class,继承自And...
    99+
    2023-05-31
    activity android roi
  • 怎么在Android开发中实现一个正则匹配功能
    这篇文章给大家介绍怎么在Android开发中实现一个正则匹配功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在Android开发中,可能也会遇到一下输入框的合法性验证,这时候最常用的就应该是正则表达式去做一些匹配了,...
    99+
    2023-05-31
    android roi
  • 怎么在C++中使用opencv实现一个车道线识别功能
    本篇文章为大家展示了怎么在C++中使用opencv实现一个车道线识别功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。(一)目前国内外广泛使用的车道线检测方法主要分为两大类:(1) 基于道路特征的车...
    99+
    2023-06-06
  • 怎么在HTML5中使用tracking.js实现一个刷脸支付功能
    怎么在HTML5中使用tracking.js实现一个刷脸支付功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。摄像头1.1input获取摄像头html5中获取用户摄像头,有...
    99+
    2023-06-09
  • Android开发中怎么实现一个应用调试功能
    Android开发中怎么实现一个应用调试功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。大家应该都有所体会,在应用开发中,我们常常会进行日志打印或者debug调试,以此来分析...
    99+
    2023-05-31
    android roi
  • 在Android开发中利用MediaRecorder实现一个录音功能
    这篇文章给大家介绍在Android开发中利用MediaRecorder实现一个录音功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码如下:public class MediaRecorderActivity ext...
    99+
    2023-05-31
    android mediarecorder roi
  • 在Android开发中利用ViewPager实现一个轮播功能
    本篇文章给大家分享的是有关在Android开发中利用ViewPager实现一个轮播功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。ViewPager是一个常用的Android...
    99+
    2023-05-31
    viewpager android age
  • Android开发中怎么实现一个全文收起功能
    这期内容当中小编将会给大家带来有关Android开发中怎么实现一个全文收起功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先写一个布局,这个布局是每个子项的布局 item_text_list.xml&...
    99+
    2023-05-31
    android roi
  • Android开发中怎么实现一个图片下载功能
    本篇文章给大家分享的是有关Android开发中怎么实现一个图片下载功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.普通的下载方式布局文件:<&#63;xml...
    99+
    2023-05-31
    android roi
  • Android开发中怎么实现一个手势密码功能
    本篇文章为大家展示了Android开发中怎么实现一个手势密码功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。如果使用GestureOverlayView,在xml配置文件中使用Android.ge...
    99+
    2023-05-31
    android roi
  • Android开发中怎么实现一个图片上传功能
    本篇文章给大家分享的是有关Android开发中怎么实现一个图片上传功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。代码实现:private void showDialog()...
    99+
    2023-05-31
    android roi
  • Android开发中怎么实现一个多图展示功能
    这篇文章将为大家详细讲解有关Android开发中怎么实现一个多图展示功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。.使用方法引用:compile 'com.w4lle.libra...
    99+
    2023-05-31
    android roi
  • Android开发中怎么实现一个静默安装功能
    这篇文章给大家介绍Android开发中怎么实现一个静默安装功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。静默安装主要分为以下几种方式:一、在ROOT过的机器上,在App中使用pm install指令安装APK: ...
    99+
    2023-05-31
    android roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作