Android人脸识别app——基于Face+,2024Android高级面试题及答案

.subscribe(new Observer() {

@Override

public void onSubscribe(Disposable d) {

mView.showProgress();

}

@Override

public void onNext(FaceppBean faceppBean) {

handleDetectResult(photo,faceppBean);

}

@Override

public void onError(Throwable e) {

mView.hideProgress();

}

@Override

public void onComplete() {

mView.hideProgress();

}

});

}




**3.Face++ 服务器会对我们上传的照片进行处理,分析照片中的人脸信息,并以 json 形式返回,返回的数据将被放入我们定义的bean 类中。**



/**

  • 面部识别结果的bean

  • @author chaochaowu

*/

public class FaceppBean {

/**

 * image_id : Dd2xUw9S/7yjr0oDHHSL/Q==

 * request_id : 1470472868,dacf2ff1-ea45-4842-9c07-6e8418cea78b

 * time_used : 752

 * faces : [{"landmark":{"mouth_upper_lip_left_contour2":{"y":185,"x":146},"contour_chin":{"y":231,"x":137},"right_eye_pupil":{"y":146,"x":205},"mouth_upper_lip_bottom":{"y":195,"x":159}},"attributes":{"gender":{"value":"Female"},"age":{"value":21},"glass":{"value":"None"},"headpose":{"yaw_angle":-26.625063,"pitch_angle":12.921974,"roll_angle":22.814377},"smile":{"threshold":30.1,"value":2.566890001296997}},"face_rectangle":{"width":140,"top":89,"left":104,"height":141},"face_token":"ed319e807e039ae669a4d1af0922a0c8"}]

 */



private String image_id;

private String request_id;

private int time_used;

private List<FacesBean> faces;

...显示部分内容



bean 类中有人脸识别得到的 性别、年龄、颜值、情绪等信息,还有每张人脸在照片中的坐标位置。接下来的工作就是对这些数据进行处理。



[]( )

------------------------------------------------------------------



**三 获取信息后的数据处理**



**1.数据的处理主要就两件事,一个是将数据以文字的形式展现,这个很简单,就不介绍了,还有一个就是将人脸在照片中标示出来,这个需要对 BitMap 进行处理,利用数据中人脸在照片中的坐标位置,我们用方框将人脸标识出来。**



private Bitmap markFacesInThePhoto(Bitmap bitmap, List<FaceppBean.FacesBean> faces) {

    Bitmap tempBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

    Canvas canvas = new Canvas(tempBitmap);

    Paint paint = new Paint();

    paint.setColor(Color.RED);

    paint.setStyle(Paint.Style.STROKE);

    paint.setStrokeWidth(10);



    for (FaceppBean.FacesBean face : faces) {

        FaceppBean.FacesBean.FaceRectangleBean faceRectangle = face.getFace_rectangle();

        int top = faceRectangle.getTop();

        int left = faceRectangle.getLeft();

        int height = faceRectangle.getHeight();

        int width = faceRectangle.getWidth();

        canvas.drawRect(left, top, left + width, top + height, paint);

    }

    return tempBitmap;

}



**2.封装了一个方法,运用 Canvas 在照片上进行绘制,因为照片中的人脸可能不止一个,所以用for循环遍历。获取人脸在照片中的坐标,利用人脸左上角的坐标以及人脸的宽高,在照片中绘制一个方框将人脸标出。**



![image](https://img-blog.csdnimg.cn/img_convert/1302a49e517770516400709cffa23ffb.webp?x-oss-process=image/format,png)



**3.剩余信息我这边采用 RecyclerView 来展示。左右滑动可以查看每张人脸的信息。RecyclerView 的 item 上展示的是简要信息,可以点击 item 进入详情页面查看面部识别的详细信息。RecyclerView 以及详情界面的实现就不作介绍了,很基本的操作。我这边也就只使用了 SharedElement 让界面切换看起来舒服一点。具体的实现可以看 github 上的代码。**



![image](https://img-blog.csdnimg.cn/img_convert/3b55f4f5306340ac07d1f198f345bd87.webp?x-oss-process=image/format,png)



其他就没什么操作了,还可以看一下我的项目架构。由于用了各种框架进行解耦,所以代码文件数量变多了,但是单个文件中的代码会变少一点,清晰易读一点,这也是解耦的目的,也方便之后的维护。



![image](https://img-blog.csdnimg.cn/img_convert/09b8d2ac8ce65767a61a99ae6969c124.webp?x-oss-process=image/format,png)



[]( )

------------------------------------------------------------------



**具体实现的细节可以看 github 上面的代码~**



**最后**



**写完这个APP后,我一直在思考一个问题,APP给吴彦祖的颜值打分80多,那100分的颜值会是怎样?**




**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/ca38847dc6a4b144136026f5a6abda6c.png)
![img](https://img-blog.csdnimg.cn/img_convert/8ee5abefa808ab520447272946c558bf.png)
![img](https://img-blog.csdnimg.cn/img_convert/934d120aff13e5e579b437599048e777.png)
![img](https://img-blog.csdnimg.cn/img_convert/c2e53e6778f1ffbd0799f99af6aafb74.png)
![img](https://img-blog.csdnimg.cn/img_convert/94b1c08b91370cc22459f83942db505a.png)
![img](https://img-blog.csdnimg.cn/img_convert/c059dd1be7aa4b7cb36dea6d588f30b8.png)
![img](https://img-blog.csdnimg.cn/13f2cb2e05a14868a3f0fd6ac81d625c.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)**
![img](https://img-blog.csdnimg.cn/img_convert/1b052628338e87cb764fd2a48667b4ab.png)



## 总结

笔者之前工作是在金融公司可能并不是特别追求技术,而笔者又是喜欢追求技术的人,所以格格不入,只能把目标放在互联网大厂了。也希望大家都去敢于尝试和追逐自己的梦想!
**BATJ大厂Android高频面试题**

![](https://img-blog.csdnimg.cn/img_convert/28723c526959fd327c2300bdce2f235f.webp?x-oss-process=image/format,png) 

![](https://img-blog.csdnimg.cn/img_convert/92393222ed3df1e1f05f72a88748105a.webp?x-oss-process=image/format,png) 

![](https://img-blog.csdnimg.cn/img_convert/02e47e936028564a4a5f44be2b92314f.webp?x-oss-process=image/format,png) 

![](https://img-blog.csdnimg.cn/img_convert/1ac56405bf12422f4a7ca5abf25da4aa.webp?x-oss-process=image/format,png) 

**觉得有收获的记得点赞,关注+收藏哦!你们的点赞就是我的动力!** 

> **本文已被[CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》]( )收录**

[**一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

**AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**

bs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

**AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值