Android开发—浅谈人脸检测的简易实现

本文介绍了在Android中实现人脸检测的步骤,通过startActivityForResult()选择图片,使用Bitmap对象存储,FaceDetector检测人脸,并在Canvas上绘制人脸矩形。详细讲解了如何加载图片、检测人脸以及在ImageView上显示结果。
摘要由CSDN通过智能技术生成

布局预览图:

在这里插入图片描述

startActivityForResult()方法


Intent意为“意图”,是android程序中各组件进行交互的一种重要方式。startActivity()是一种常用的开启activity组件的方法,而这边所讲的startActivityForResult()和startActivity()不同之处在于:startActivityForResult主要用来从activity A跳转到activity B,然后返回activity A,并且获取从activity B中传回来的参数。

理解了作用之后,我们便能将其运用在按钮的点击事件上,根据上文布局文件中按钮A的回调函数名为selectPhoto,这里我们写一个selectPhoto()方法,在方法中创建一个intent对象并设置属性以调用android系统中的图库:

public void selectPhoto(View view) {

// 调用系统的图库

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

intent.addCategory(Intent.CATEGORY_OPENABLE);

intent.setType(“image/*”);

startActivityForResult(intent, 0);

}

需要知道的是,startActivityForResult执行的时候会自动调用onActivityResult()方法,所以这里就重写onActivityResult获取选择到的图片Uri并显示到ImageView中:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (data != null) {

Uri uri = data.getData();//获取图片的路径

imageView.setImageURI(uri);//ImageView显示图片

}

super.onActivityResult(requestCode, resultCode, data);

}

Bitmap对象存储图片


Bitmap,意为“位图”,是android.graphics包下的一个用于描述图像的类。位图可以理解为一个画架,把图放到上面然后可以对图片做一些列的处理。位图文件图像显示效果好,但是非压缩格式,需要占用较大的存储空间。

获取了图片的Uri之后,我们就可以用一个Bitmap对象来加载并存储这张图片,通过MediaStore.Images.Media.getBitmap()方法。

定义一个数据成员Bitmap对象:

private Bitmap faceImg;

在onActivityResult中添加faceImg的加载

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (data != null) {

Uri uri = data.getData();//获取图片的路径

imageView.setImageURI(uri);//ImageView显示图片

try {

this.faceImg = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);

}catch(Exception e){

S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值