基于近红外与可见光双目摄像头的活体人脸检测原理

人脸活体检测(Face Anti-Spoofing)是人脸识别系统中的重要一环,它负责验证捕捉到的人脸是否为真实活体,以抵御各种伪造攻击,如彩色纸张打印的人脸图、电子设备屏幕中的人脸数字图像及面具等。这些攻击手段若得逞,将对金融安全、门禁管理等造成严重威胁。

基于近红外与可见光双目摄像头的活体人脸检测利用红外摄像头下视频和大部分纸张不能呈现图像的特性,有效的防止了视频中伪造人脸的攻击;同时利用近红外摄像头和可见光摄像头下真实人脸与照片人脸纹理差异和颜色差异,可以有效地区分人脸是来自真实人脸还是照片中的伪造人脸。

Android实现双目红外活体检测

首先建议使用上图1 的USB 双目摄像头,能支持双头Type-C 接口UVC协议的,现在的手机平板大部分都是TypeC 接口了,千万别整公头USB口,需要特定的开发板才能开发调试。

然后 打通UVC协议摄像头预览,能正常预览才能取数据进行AI分析人脸识别等,目前Android 平台的UVC协议摄像头库最有名的就是日本大神的 saki4510t/UVCCamera,但是很久不维护了,文章最后的源码会集成到Demo 中

最后 就可以拿双目摄像头中的RGB和IR 图像进行活体检测人脸识别了。

ini 代码解读复制代码 /**

* 初始化IR 摄像头

*

*/

private void initIRCamara() {

irCameraManager.initCameraHelper();

irCameraManager.setOpeningMultiCamera(true);

irCameraManager.setCameraView(binding.irCameraTextureView,true);

irCameraManager.selectUsbCamera(UsbCameraEnum.IR);

    irCameraManager.setOnDeviceStatuesCallBack(new UsbCameraManager.OnDeviceStatuesCallBack() {
@Override
public void onAttach(UsbDevice device) {
} @Override
public void onDeviceOpen(UsbDevice device, boolean isFirstOpen) { }
}); irCameraManager.setPreviewHeight(PREVIEW_HEIGHT);
irCameraManager.setFrameCallback(frame -> {
Size currentPreviewSize = irCameraManager.getCurrentPreviewSize();
int width = PREVIEW_WIDTH;
int height = PREVIEW_HEIGHT;
if (currentPreviewSize != null) {
width = currentPreviewSize.width;
height = currentPreviewSize.height;
}
Bitmap bitmap = DataConvertUtils.NV21Data2Bitmap(frame, width, height, 0, 0, false);
if (bitmap != null) {
faceVerifySetBitmap(bitmap, FaceVerifyUtils.BitmapType.IR);
}
}, UVCCamera.PIXEL_FORMAT_NV21);
}

初始化RGB和IR 数据后把数据转为Bitmap 后送入引擎开始人脸识别,双目活体检测了

ini 代码解读复制代码faceVerifyUtils.goVerifyWithIR(irBitmap, rgbBitmap);

注意事项

目前的USB双目摄像头的带宽普遍不足,但好在人脸识别,双目活体检测不需要太高分辨率,1280*720 足够了

需要宽动态抗逆光摄像头,调试的时候经常经常用手触摸镜头需要保持镜头整洁

确保两个摄像头都正常稳定同步的输出了影像画面

演示接入代码Demo 和体验App 下载

上述的UVC 协议摄像头管理已经放在工程目了libs 下面了打包成了AAR 文件,整个项目代码GitHub 搜索AnyLifeZLB/FaceVerificationSDK

或者点击: github.com/AnyLifeZLB/…

手上有双目摄像头的连接设备可以立马体验效果

基于近红外与可见光双目摄像头的人脸识别与活体检测,文末附Demo的更多相关文章

  1. 基于MTCNN多任务级联卷积神经网络进行的人脸识别 世纪晟人脸检测

    神经网络和深度学习目前为处理图像识别的许多问题提供了最佳解决方案,而基于MTCNN(多任务级联卷积神经网络)的人脸检测算法也解决了传统算法对环境要求高.人脸要求高.检测耗时高的弊端. 基于MTCNN多 ...

  2. Python程序调用摄像头实现人脸识别

    使用简单代码实现摄像头进行在线人脸识别 import cv2 import sys import logging as log import datetime as dt from time impo ...

  3. Opencv摄像头实时人脸识别

    Introduction 网上存在很多人脸识别的文章,这篇文章是我的一个作业,重在通过摄像头实时采集人脸信息,进行人脸检测和人脸识别,并将识别结果显示在左上角. 利用 OpenCV 实现一个实时的人脸 ...

  4. 使用JavaCV播放视频、摄像头、人脸识别

    一.导入Maven依赖包 <dependencies> <!-- https://mvnrepository.com/artifact/org.bytedeco/javacv-pla ...

  5. MFC中利用Opencv与C++抓取摄像头进行人脸识别(Mat)

    原文:http://blog.csdn.net/mr_curry/article/details/51098311 第一次写博客哈哈,有些小激动,还请各位大神多多包涵~ 最近的项目需要用到人脸识别,作 ...

  6. 利用face_recognition,dlib与OpenCV调用摄像头进行人脸识别

    用已经搭建好 face_recognition,dlib 环境来进行人脸识别 未搭建好环境请参考:https://www.cnblogs.com/guihua-pingting/p/12201077. ...

  7. 基于cyusb3014的usb3.0双目摄像头开发测试小结(使用mt9m001c12stm)

    测试图像 摄像头分辨率为1280*1024,双目分辨率为2560*1024 ps:时钟频率太高,时序约束还得进一步细化,图像偶尔会出现部分雪花,下一步完善

  8. 基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)

    今天我们来盘一盘Socket通讯和WebSocket协议在即时通讯的小应用——聊天. 理论大家估计都知道得差不多了,小编也通过查阅各种资料对理论知识进行了充电,发现好多demo似懂非懂,拷贝回来又运行 ...

  9. 手把手教你基于SqlSugar4编写一个可视化代码生成器(生成实体,以SqlServer为例,文末附源码)

    在开发过程中免不了创建实体类,字段少的表可以手动编写,但是字段多还用手动创建的话不免有些浪费时间,假如一张表有100多个字段,手写有些不现实. 这时我们会借助一些工具,如:动软代码生成器.各种ORM框 ...

  10. 30分钟玩转Net MVC 基于WebUploader的大文件分片上传、断网续传、秒传(文末附带demo下载)

    现在的项目开发基本上都用到了上传文件功能,或图片,或文档,或视频.我们常用的常规上传已经能够满足当前要求了, 然而有时会出现如下问题: 文件过大(比如1G以上),超出服务端的请求大小限制: 请求时间过 ...

随机推荐

  1. shell 判断是否已安装了某个软件

    判断是否安装了node 复制if ! type node >/dev/null 2>&1; then echo 'node 未安装'; else echo 'node 已安装'; ...

  2. rsync+ssh同步备份文件

    定期对web代码或重要的文件做同步异地服务器备份,防止服务器故障严重磁盘损坏时文件丢失的问题. 备份服务器:192.168.200.134 目标服务器:192.168.201.65 rsync同步命令 ...

  3. 【转载】wget命令详解

    导读: wget是Linux中的一个下载文件的工具,wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上. 它用在命令行下. ...

  4. Qt音视频开发19-vlc内核各种事件通知

    一.前言 对于使用第三方的sdk库做开发,除了基本的操作函数接口外,还希望通过事件机制拿到消息通知,比如当前播放进度.音量值变化.静音变化.文件长度.播放结束等,有了这些才是完整的播放功能,在vlc中 ...

  5. Qt编写安防视频监控系统56-数据库分页

    一.前言 在视频监控系统中也需要对日志记录进行查询显示,有时候查询到的记录并不能一页显示完,最好的做成翻页显示,如果所有记录都在一页显示通过滚动条查看,不是很符合用户习惯,比如搜索引擎的记录也都是分页 ...

  6. 使用Docker部署的基于binlog实现Mysql8

    概念 MySQL 基于 Binlog 的主从复制(Master-Slave Replication)是 MySQL 数据库中实现数据复制的一种机制.在这种复制模式下,主库(Master)记录所有对数据 ...

  7. 一个适用于 .NET 的开源整洁架构项目模板

    前言 项目架构模式在软件开发中扮演着至关重要的角色,它们为开发者提供了一套组织和管理代码的指导原则,以提高软件的可维护性.可扩展性.可重用性和可测试性.今天大姚给大家分享一个适用于 .NET 的开源整 ...

  8. 我的c语言笔记

    1. 进制转换 二进制.八进制和十六进制向十进制转换都非常容易,就是"按权相加".如:1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + ...

  9. Java API 之集合

    1. 包装类 (基本类型中没有多少我们能够使用的方法和属性,为了便捷我们需要自己去写) 针对每一种基本类型提供了对应的类的形式 --- 包装类   byte short int long float ...

  10. 史上最详细idea提交代码到github教程

    史上最详细idea提交代码到github教程步骤前言github上创建空项目 idea上代码关联本地gitidea上代码本地提交解决Push rejected: Push to origin/mast ...