android 人脸识别边框_Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地...
效果图:
第一种是使用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
}
}
}
android 人脸识别边框_Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地...相关推荐
- 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 ...
最新文章
- LeetCode简单题之独一无二的出现次数
- node升级命令_Laravel Mix 4升级说明与“排坑儿”指南
- 开发日记-20190511 关键词 onStart()和onResume()存在的原因(猜测篇)
- 各种 分页存储过程整理
- Debug Tensorflow: Object was never used (type <class ‘tensorflow.python.ops.tensor_array_ops.TensorA
- php 浏览器 打印控件,JavaScript_JavaScript 实现打印,打印预览,打印设置,WebBrowser是IE内置的浏览器控件 - phpStudy...
- 深度学习auc_机器学习集成学习与模型融合!
- 构建高性能分布式搜索引擎(Wcf-基础篇)一
- (转)invalidate()和postInvalidate() 的区别及使用
- 打印机修复工具_Windows10更新后打印机崩溃?速度安装修复补丁
- 链表:链表中倒数第k个结点(2)
- 【Unity】Obi插件系列(二)—— Backends、Updaters、Simulation
- 【2020省选模拟】题解
- markdown排版常用
- 如何成为一名架构师,架构师成长之路
- 2022-2028年中国金融业OCR识别行业市场调查研究及前瞻分析报告
- 达芬奇大王的链表贪吃蛇(java)
- JVM类加载过程,JDK和JER区别
- Elixir-Tuples
- 域名备案注销的简单方法
热门文章
- 静态成员对比实例成员(static修饰符解析)
- php 往sftp发送文件夹,通过PHP将文件上传到SFTP服务器(phpseclib)
- Microsoft SQL Server Protocols
- qtableview及自定义model的使用,对比qtablewidget性能及内存优化
- js文件之间函数的调用
- linux 内核模块 定时器,linux内核定时器__backup_timer_hour_struct_定时器_模块__169IT.COM...
- 2021年高考成绩查询海南时间,2021年海南高考后多久出成绩,附海南高考成绩查询时间入口方式...
- C++字符串输入输出操作
- OpenCasCade开发环境搭建
- 全球搜索引擎集合(主要有移动搜索APP的)