android 人脸识别边框_Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地,CameraX,虹软人脸识别...
效果图:
第一种是使用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,虹软人脸识别...相关推荐
- Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地,CameraX,虹软人脸识别
效果图: 第一种是使用camerax进行预览,android camerax预览官方文档,主要通过imageAnalysis,抓帧进行图片处理,然后通过android自带的图片人脸识别FaceDete ...
- android 人脸识别边框_android Arcface人脸识别框/人脸抓拍框/人脸追踪框
为什么要改? 先来看看sdk demo中提供的人脸框样式,这个框看上去并不是非常美观(个人觉得) 再看看下面这个框是不是就要顺眼一点 怎么换? 先来看看原始的画法: @Override public ...
- android 人脸识别边框_android自定义Arcface人脸识别框/人脸抓拍框/人脸追踪框
为什么要改? 先来看看sdk demo中提供的人脸框样式,这个框看上去并不是非常美观(个人觉得) 在这里插入图片描述 再看看下面这个框是不是就要顺眼一点 在这里插入图片描述 怎么换? 先来看看原始的画 ...
- android触屏对焦_Android相机开发(五): 触摸对焦,触摸测光,二指手势缩放
Android Camera Develop: touch to focus, touch to metering, double finger touch to zoom 概述 本篇在(四)的基础上 ...
- android 弹窗有边框_Android 多种简单的弹出框样式设置代码
简介 这是一个基于AlertDialog和Dialog这两个类封装的多种弹出框样式,其中提供各种简单样式的弹出框使用说明.同时也可自定义弹出框. 特性 1.使用链式开发代码简洁明了 2.所有的弹出框样 ...
- android 弹窗有边框_android中常用的弹出提示框
我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...
- android 键盘遮盖输入框_android弹出输入框,软键盘挡住部分编辑框
公司要做一款类似微信的即时通讯app 现有如下需求: 当edittext获取到焦点,弹出输入框,并且将listview(recyclerview)顶上去 类似微信QQ的效果,如下图所示 editTex ...
- Android监听后台状态,退出即杀死并显示退出提示框
一.当界面不可见时释放内存 @Overridepublic void onTrimMemory(int level) {super.onTrimMemory(level);switch (level) ...
- android 人脸识别边框_【技术分享】虹软人脸识别 - Android Camera实时人脸追踪画框适配...
在使用虹软人脸识别Android SDK的过程中 ,预览时一般都需要绘制人脸框,但是和PC平台相机应用不同,在Android平台相机进行应用开发还需要考虑前后置相机切换.设备横竖屏切换等情况,因此在人 ...
- 虹软人脸识别SDK接入Milvus实现海量人脸快速检索
虹软人脸识别SDK接入Milvus实现海量人脸快速检索 背景 虹软SDK及Milvus简介 开发环境 虹软人脸识别SDK使用简介 Milvus环境搭建 快速检索实现 人脸识别流程简介 快速检索 虹软S ...
最新文章
- 【控制】《自动控制原理》胡寿松老师-第9章-线性系统的状态空间分析与综合
- android两张图片切换,android recyclerview 切换列表视图
- 设计模式--命令(Command)模式
- NYOJ 139 我排第几个?
- python3精要(24)-函数内省、函数注释、函数属性
- 这些BATJ必考的Java面试题,你都懂了吗?
- 2020蓝桥杯省赛---java---B---2(指数计算)
- matlab delete、clf、cla、close、closereq删除对象
- 知识付费网站php源码,原创在线教育知识付费类源码只要50元
- Django模板:url反向解析
- python,进程和线程
- linux的8小时差问题解决
- pandas用均值填充nan_如何填补Pandas中的缺失值(机器学习入门篇)
- (BMVC-2021)GaitMask:基于掩码的步态识别模型
- 如何利用SPSS软件进行数据的描述性分析
- 超清楚!麦克风阵列学习笔记(一)——线性麦克风阵列的时间延迟Beamforming算法(Time-Delay Beamforming of Microphone ULA Array)
- VLC保存网络视频及抓包合成视频
- 坐月子“一嫂难求”,月嫂为何这么有“钱景”?
- CRF as RNN 代码解读
- [置顶]R语言 ggplot2包
热门文章
- [转载] 周爱民:《大道至简》创作的幕后故事
- [项目总结-原创]InternetRadio项目Ajax技术方案选型
- 如何测网络稳定性_功率计如何测准极限低功率小信号
- javafx弹出二级stage窗口时虚化主窗口
- qt和arcgis for qt在地图上做测距(画线和显示距离,单位km)
- CentOS遇到Qt编译问题的解决方案(error: cannot find -lGL)
- win7修复计算机消失,Win7一键修复丢失DLL,常见dll丢失一键修复方法
- 读书书签-《高等应用数学问题的MATLAB求解》第三版,薛定宇 陈阳泉著
- java web jsp/servlet 考勤管理系统
- 记录免费的学习资源-视频教程