效果图:

第一种是使用camerax进行预览,android camerax预览官方文档,主要通过imageAnalysis,抓帧进行图片处理,然后通过android自带的图片人脸识别FaceDetector判断是否有人脸,有人脸保存当前抓拍的照片:

val file = File(filesDir, "head_tmp.png")

val create = Observable.create { emitter ->

val intArray = IntArray(2)

iv_scan.getLocationInWindow(intArray)

val createBitmap = Bitmap.createBitmap(

bitmap, intArray[0], intArray[1], iv_scan.width, iv_scan.height

)

//必须是565才能识别

val bitmap1: Bitmap = createBitmap.copy(Bitmap.Config.RGB_565, true)

val faceDetector = FaceDetector(bitmap1.width, bitmap1.height, 1)

val array = arrayOfNulls(1)

val faces = faceDetector.findFaces(bitmap1, array)

if (faces > 0) {

Log.e(TAG, "检测到脸")

val fos = FileOutputStream(file.path)

createBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos)

fos.flush()

fos.close()

emitter.onNext(file)

} else {

Log.e(TAG, "未检测到脸")

emitter.onError(Throwable("未检测到脸"))

}

}

var disposable: Disposable? = null

val observer = object : Observer {

override fun onNext(t: File) {

disposable?.dispose()

isOne = false

setResult(Activity.RESULT_OK)

finish()

}

override fun onError(e: Throwable) {

isOne = true

}

override fun onComplete() {

}

override fun onSubscribe(d: Disposable) {

disposable = d

}

}

create.subscribeOn(Schedulers.computation())//指定被观察者线程

.observeOn(AndroidSchedulers.mainThread())//指定观察者线程

.subscribe(observer)

第二种使用了免费的虹软识别人脸识别,主要判断指定识别框的rect和虹软人脸识别框的rect,比较两个rect,是否在它的范围内,如果在抓拍人脸:

if (drawInfoList.size > 0) {

for (i in drawInfoList.indices) {

val rect: Rect = drawInfoList[i].rect

val rect1 = Rect()

iv_scan.getGlobalVisibleRect(rect1)

if (rect1.contains(rect)) {

//为了美观,扩大rect截取注册图

val cropRect: Rect =

CommUtils.getBestRect(

previewSize!!.width, previewSize!!.height, faceInfoList[i].rect

)

cropRect.left = cropRect.left and 3.inv()

cropRect.top = cropRect.top and 3.inv()

cropRect.right = cropRect.right and 3.inv()

cropRect.bottom = cropRect.bottom and 3.inv()

headBmp = CommUtils.getHeadImage(

nv21,

previewSize!!.width,

previewSize!!.height,

faceInfoList[i].orient,

cropRect,

ArcSoftImageFormat.NV21

)

headBmp?.apply {

cropBitmap(this)

}

break

}

}

}

demo:https://github.com/withyi9223/facesb

android 人脸识别边框_Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地,CameraX,虹软人脸识别...相关推荐

  1. Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地,CameraX,虹软人脸识别

    效果图: 第一种是使用camerax进行预览,android camerax预览官方文档,主要通过imageAnalysis,抓帧进行图片处理,然后通过android自带的图片人脸识别FaceDete ...

  2. android 人脸识别边框_android Arcface人脸识别框/人脸抓拍框/人脸追踪框

    为什么要改? 先来看看sdk demo中提供的人脸框样式,这个框看上去并不是非常美观(个人觉得) 再看看下面这个框是不是就要顺眼一点 怎么换? 先来看看原始的画法: @Override public ...

  3. android 人脸识别边框_android自定义Arcface人脸识别框/人脸抓拍框/人脸追踪框

    为什么要改? 先来看看sdk demo中提供的人脸框样式,这个框看上去并不是非常美观(个人觉得) 在这里插入图片描述 再看看下面这个框是不是就要顺眼一点 在这里插入图片描述 怎么换? 先来看看原始的画 ...

  4. android触屏对焦_Android相机开发(五): 触摸对焦,触摸测光,二指手势缩放

    Android Camera Develop: touch to focus, touch to metering, double finger touch to zoom 概述 本篇在(四)的基础上 ...

  5. android 弹窗有边框_Android 多种简单的弹出框样式设置代码

    简介 这是一个基于AlertDialog和Dialog这两个类封装的多种弹出框样式,其中提供各种简单样式的弹出框使用说明.同时也可自定义弹出框. 特性 1.使用链式开发代码简洁明了 2.所有的弹出框样 ...

  6. android 弹窗有边框_android中常用的弹出提示框

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...

  7. android 键盘遮盖输入框_android弹出输入框,软键盘挡住部分编辑框

    公司要做一款类似微信的即时通讯app 现有如下需求: 当edittext获取到焦点,弹出输入框,并且将listview(recyclerview)顶上去 类似微信QQ的效果,如下图所示 editTex ...

  8. Android监听后台状态,退出即杀死并显示退出提示框

    一.当界面不可见时释放内存 @Overridepublic void onTrimMemory(int level) {super.onTrimMemory(level);switch (level) ...

  9. android 人脸识别边框_【技术分享】虹软人脸识别 - Android Camera实时人脸追踪画框适配...

    在使用虹软人脸识别Android SDK的过程中 ,预览时一般都需要绘制人脸框,但是和PC平台相机应用不同,在Android平台相机进行应用开发还需要考虑前后置相机切换.设备横竖屏切换等情况,因此在人 ...

  10. 虹软人脸识别SDK接入Milvus实现海量人脸快速检索

    虹软人脸识别SDK接入Milvus实现海量人脸快速检索 背景 虹软SDK及Milvus简介 开发环境 虹软人脸识别SDK使用简介 Milvus环境搭建 快速检索实现 人脸识别流程简介 快速检索 虹软S ...

最新文章

  1. 【控制】《自动控制原理》胡寿松老师-第9章-线性系统的状态空间分析与综合
  2. android两张图片切换,android recyclerview 切换列表视图
  3. 设计模式--命令(Command)模式
  4. NYOJ 139 我排第几个?
  5. python3精要(24)-函数内省、函数注释、函数属性
  6. 这些BATJ必考的Java面试题,你都懂了吗?
  7. 2020蓝桥杯省赛---java---B---2(指数计算)
  8. matlab delete、clf、cla、close、closereq删除对象
  9. 知识付费网站php源码,原创在线教育知识付费类源码只要50元
  10. Django模板:url反向解析
  11. python,进程和线程
  12. linux的8小时差问题解决
  13. pandas用均值填充nan_如何填补Pandas中的缺失值(机器学习入门篇)
  14. (BMVC-2021)GaitMask:基于掩码的步态识别模型
  15. 如何利用SPSS软件进行数据的描述性分析
  16. 超清楚!麦克风阵列学习笔记(一)——线性麦克风阵列的时间延迟Beamforming算法(Time-Delay Beamforming of Microphone ULA Array)
  17. VLC保存网络视频及抓包合成视频
  18. 坐月子“一嫂难求”,月嫂为何这么有“钱景”?
  19. CRF as RNN 代码解读
  20. [置顶]R语言 ggplot2包

热门文章

  1. [转载] 周爱民:《大道至简》创作的幕后故事
  2. [项目总结-原创]InternetRadio项目Ajax技术方案选型
  3. 如何测网络稳定性_功率计如何测准极限低功率小信号
  4. javafx弹出二级stage窗口时虚化主窗口
  5. qt和arcgis for qt在地图上做测距(画线和显示距离,单位km)
  6. CentOS遇到Qt编译问题的解决方案(error: cannot find -lGL)
  7. win7修复计算机消失,Win7一键修复丢失DLL,常见dll丢失一键修复方法
  8. 读书书签-《高等应用数学问题的MATLAB求解》第三版,薛定宇 陈阳泉著
  9. java web jsp/servlet 考勤管理系统
  10. 记录免费的学习资源-视频教程