android 动态人脸识别码,Android开发中人脸识别(静态)

知道没有妹纸,你们是不会看的。先放效果图

44e249e393e1029c1117a3aef91cefa6.png

最近,项目中需要用到人脸识别,苦于无奈,各种百度,google有关Android开发中人脸识别的内容,最终发现Android官方自带的FaceDetector可以实现这个功能,就拿来试试手。这个类在android.media包下

3405bd89371ed345234a84df60755d38.png

使用

需要注意:

在识别图片中的人脸时,人脸必须是基本露出五官的正脸,侧脸很难识别出来。(但根据自己多次测试,发现貌似google的FaceDetector人脸识别算法是基于人眼的识别。如有错误,请大家指正)

1.创建一个FaceDetector

width:所需要识别图片的宽

height:所需要识别图片的高

maxFaces:所需要识别的最大脸数 FaceDetector (int width, int height, int maxFaces)复制代码

2.开始识别,并将识别的人脸数据存放到Faces[]数组中。

bitmap:所需要识别的图片

faces:存储所有识别到的脸

#注意在构建被识别图片Bitmap时,图片质量一定要设置为Bitmap.Config.RGB_565,否则无法识别。 findFaces (Bitmap bitmap,Face[] faces)复制代码

直接开始撸代码

将图片识别的功能封装到自定义ImageView中,将识别出来的人脸用方框在图上画出来。 public class FaceView extends ImageView {

public static final String TAG = "FaceView";

/**

* 识别图片的宽高

*/

private int imageWidth, imageHeight;

private FaceDetector mFaceDetector;

/**

* 一次可识别的最大数

*/

private int maxFace = 3;

private Bitmap mFaceImage;

/**

* 存储识别的脸

*/

private FaceDetector.Face[] mFaces = new FaceDetector.Face[maxFace];

/**

* 真实检测到的人脸数

*/

private int mFactFaces;

private float myEyesDistance;

public FaceView(Context context) {

super(context);

init();

}

public FaceView(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}

private void init() {

BitmapFactory.Options mOptions = new BitmapFactory.Options();

mOptions.inPreferredConfig = Bitmap.Config.RGB_565;//一定是 565,其他识别不了。

//拿到需要识别的图片

mFaceImage = BitmapFactory.decodeResource(getResources(), R.mipmap.image, mOptions);

imageWidth = mFaceImage.getWidth();

imageHeight = mFaceImage.getHeight();

//创建FaceDetector

mFaceDetector = new FaceDetector(imageWidth, imageHeight, maxFace);

//开始检测,并将检测到的人脸存到mFaces数组中

mFactFaces = mFaceDetector.findFaces(mFaceImage, mFaces);

Log.e(TAG, "检测到人脸数:" + mFactFaces);

}

/**

* 对每个人脸进行画框

*/

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

Paint mPaint = new Paint();

mPaint.setColor(Color.GREEN);

mPaint.setStyle(Paint.Style.STROKE);

mPaint.setStrokeWidth(2);

//对每个人脸开始画框

for (int i = 0; i < mFactFaces; i++) {

FaceDetector.Face face = mFaces[i];

PointF mPoint = new PointF();

face.getMidPoint(mPoint);

myEyesDistance = face.eyesDistance();//得到人脸中心点和眼间距离参数

canvas.drawRect(

mPoint.x - myEyesDistance,

mPoint.y - myEyesDistance,

mPoint.x + myEyesDistance,

(float) (mPoint.y + myEyesDistance * 1.5),

mPaint);

}

}

}复制代码

然后在布局文件 activity_static 中直接使用该FaceView。 <?xml version="1.0" encoding="utf-8"?>

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:src="@mipmap/image">

复制代码

Activity中使用布局文件 public class StaticActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_static);

}

}复制代码

也可以直接 public class StaticActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(new FaceView(this));

}

}复制代码

就这样,完了。文章中如果有错误,望大家多多指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android百度人脸识别Demo是一个基于百度人脸识别技术开发Android应用程序示例。该Demo旨在展示如何使用百度人脸识别SDK来实现人脸的检测、识别和验证等功能。 通过该Demo,我们可以实现以下功能: 1. 人脸检测:能够在图像或摄像头帧检测人脸的位置、大小和角度信息。 2. 人脸比对:能够对两张人脸图像进行比对,判断是否属于同一人。 3. 人脸搜索:能够对一组已知人脸图像进行搜索,找到与查询人脸最相似的人脸。 4. 人脸注册:能够将一张人脸图像注册到人脸库,方便后续的比对和搜索操作。 5. 人脸属性分析:能够分析人脸的年龄、性别、表情等属性信息。 使用该Demo,我们可以将百度人脸识别能力集成到我们自己的Android应用程序,为用户提供更加安全、方便和智能的人脸识别功能。比如,我们可以结合人脸识别技术来实现人脸解锁、人脸支付、人脸签到等应用场景。 在使用百度人脸识别Demo前,我们需要先在百度开放平台注册账号,创建应用并获取到相应的API Key和Secret Key,然后将其配置到Demo。此外,我们还需要在Android设备上配置相机权限,以便Demo能够调用摄像头进行人脸检测和识别。 总之,Android百度人脸识别Demo是一个非常实用的示例程序,能够帮助我们了解并应用百度人脸识别功能,为我们的Android应用程序增加更多智能化的特性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值