本内容主要实现了以下功能:

  • 圆形相机预览框
  • FaceDetector人脸识别检测
  • 截取图片中的人脸图片(宽高自定义)
  • 圆形图片显示

效果图:

以下只说了大致的实现思路和核心入口代码,详情见demo(文末奉上)

1、圆形相机预览

自定义CircleCameraLayout类,自定义一个轮廓提供者裁剪一个圆形,在定义一个相机预览CameraPreview,然后把CameraPreview到CircleCameraLayout中。

2、FaceDetector人脸识别检测

通过实现Camera.PreviewCallback的方法拿到bytes数组,转为RGB_565的bitmap,然后对bitmap进行检测,代码如下
@Override
public void onPreviewFrame(byte[] bytes, Camera camera) {Log.d(TAG, "onPreviewFrame:" + camera);if (System.currentTimeMillis() - lastModirTime <= 200 || bytes == null || bytes.length == 0) {return;}face(bytes, camera);lastModirTime = System.currentTimeMillis();
}
private void face(byte[] bytes, Camera camera) {Camera.Size size = camera.getParameters().getPreviewSize();YuvImage image = new YuvImage(bytes, ImageFormat.NV21, size.width, size.height, null);if (image != null) {ByteArrayOutputStream stream = new ByteArrayOutputStream();image.compressToJpeg(new Rect(0, 0, size.width, size.height), 80, stream);Bitmap bmp = BitmapFactory.decodeByteArray(stream.toByteArray(), 0, stream.size());Matrix matrix = new Matrix();matrix.reset();matrix.setRotate(-90);bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);Bitmap bitmap = bmp.copy(Bitmap.Config.RGB_565, true);//开始检测 当faces 说明检测到人脸了。FaceDetector faceDetector = new FaceDetector(bitmap.getWidth(), bitmap.getHeight(), 1);FaceDetector.Face[] face = new FaceDetector.Face[1];int faces = faceDetector.findFaces(bitmap, face);if (faces > 0) {Log.d(TAG, "onPreviewFrame检测到人脸");}try {stream.close();} catch (IOException e) {e.printStackTrace();}}
}

3、截取图片中的人脸图片

我们可以通过FaceHelper类对检测到有人脸的bitmap进行人脸截取就能拿到位于人脸区域的图片。

Bitmap faceBitmap = FaceHelper.genFaceBitmap(bitmap);//得到截取后的bitmap

在FaceHelper类中的genFaceBitmap方法中的最后几行中的下面这行的代码进行宽高截取,我这里写的是宽为480,高自适应。

final Bitmap result = Bitmap.createBitmap(cacheBitmap, startX, startY, 480, height);

4、圆形图片显示

主要是通过自定义CircleImageView得到了一个圆形的imageview。

最后记得添加相机聚焦等相关权限。

本文demo:

https://download.csdn.net/download/m13984458297/11351147

Android 系统FaceDetector人脸识别检测,圆形相机预览框,截取图片中的人脸图片(宽高自定义),圆形图片显示。相关推荐

  1. Android AR开发实践之七:OpenGLES相机预览背景绘制源码详解

    Android AR开发实践之七:OpenGLES相机预览背景绘制源码详解 目录 Android AR开发实践之七:OpenGLES相机预览背景绘制源码详解 一.OpenGL ES渲染管线 1.基本处 ...

  2. android 圆形相机预览拍照_Android多种方式实现相机圆形预览的示例代码

    效果图如下: 一.为预览控件设置圆角 public RoundTextureView(Context context, AttributeSet attrs) { super(context, att ...

  3. android 圆形相机预览拍照_Android多种方式实现相机圆形预览

    最终效果图如下: 一.为预览控件设置圆角 public RoundTextureView(Context context, AttributeSet attrs) { super(context, a ...

  4. Android 模仿手机QQ表情输入和表情预览框

    闲来无事花了一点空暇时间写了一个模仿Android版手机QQ的表情输入框 效果图如下 实现步骤 一:布局 二:录入填充表情 三:监听表情的适配器的触摸监听显示出预览框 一 .布局 我是自己自定一个Ex ...

  5. 人脸识别 无法打开相机 笔记本_笔记本上的人脸识别怎么用?需要安装驱动吗?...

    越来越多的电脑支持人脸识别 通过IR红外镜头识别面孔 进系统又快又安全 那么问题来了 怎么看你的电脑支不支持人脸识别 需不需要安装驱动 如何设置呢 1.是否支持人脸识别 右击开始菜单进入[设备管理器] ...

  6. python人脸识别环境搭建_怎样用3分钟搭建 Python 人脸识别系统

    Face Recognition 使用的是 C++ 开源库 dlib 通过深度学习模型构建的先进人脸识别系统,可通过 Python 接口或命令行工具对图片中的人脸进行识别.在 Labeled Face ...

  7. Python简单实现人脸识别检测, 对照片进行评分

    大家好,今天和大家说说如何用Python简单实现人脸识别检测, 对照片进行排名,看看自己有多漂亮. [开发环境]: Python 3.8 Pycharm 2021.2 [模块使用]: requests ...

  8. Android系统VIN码识别SDK

    Android系统VIN码识别SDK 什么是VIN码 汽车vin码是一组由十七个英数组成,用于汽车上的一组独一无二的号码,它可以识别汽车的制造商.发动机.底盘序列号等性能数据. VIN是英文(车辆识别 ...

  9. Python实现人脸识别检测, 对美女主播照片进行评分排名

    前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 素材.视频.代码.插件安装教程我都准备好了,直接在文末名片自取就可点击此处跳转 开发环境: Python 3.8 Pycharm 2021.2 模块使用: ...

  10. Android相机预览方向

    以前对Camera了解的不是太深入,最近有需求把人脸识别 集成到项目,必然会与Camera打交道,遇到一些坑,与大家分享一下. 一.预览方向   Camera.CameraInfo info = ne ...

最新文章

  1. Helm包管理工具(简介、安装、方法)
  2. java课程设计题目及代码中国象棋,写的太详细了
  3. FastReport 自适应列文字大小
  4. 网站停办了 服务器有备份吗,网站在服务器上四种备份方法
  5. boost::mpl::not_equal_to相关的测试程序
  6. Android 小项目之--Mini音乐播放器【简单版】(附源码)
  7. 黑发不知勤学早,白首方悔读书迟———颜真卿
  8. ffmpeg实现摄像头拉流_干货 | 速看!乐橙K32Famp;K36F摄像头全彩夜视功能的不同点全在这了!...
  9. 不会使用Spring的配置文件,赶紧把这个甩给他
  10. 单位阶跃信号是周期信号吗_vivoS7e是5G手机吗-支持5G吗-5G信号怎么样
  11. 批量下载花瓣图片脚本--抖机灵
  12. 安卓手机安装magisk
  13. (论文笔记)An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognition
  14. 游戏服务器的那些事儿
  15. 安卓桌面壁纸_梅糖桌面安卓手机版下载-梅糖桌面app官方版下载v2.2安卓版
  16. 时间格式化问题@DateTimeFormat和@JsonFormat的区别
  17. 乘幂法计算矩阵主特征值和特征向量-Matlab实现
  18. hibernate一对一主键关联映射(二)---双向关联
  19. uboot.lds 链接文件分析
  20. 电工学复习【9】-- 触发器和时序逻辑电路

热门文章

  1. viper4android xml,ROM 定制图文教程 ROM 制作深度解析(新手适用)
  2. SPSS分析基础——T检验
  3. nutch代码分析第一篇——综述
  4. [ZT]大型企业局域网安全解决方案
  5. Python爬取——国家统计局省份加城市 并写入数据库
  6. Ubuntu安装Adobe Reader
  7. std::numeric_limits的一个使用注意事项
  8. 简单代码实现LCD菜单(C语言的实现方法---加强版 有视频教程)
  9. 《圣经》放射光明,金钱散发温暖
  10. vue实现添加购物车光标效果