1 概述
人脸识别技术是随着技术发展而产生的生物识别技术,目前已广泛应用于安防领域,主要用于身份验证和身份识别。视频监控是安防系统常见的一种表现形式,需要部署各种摄像头,包括网络摄像头IPC,可以通过流媒体如RTSP视频流的方式供第三方系统集成。
虹软是计算机视觉行业领先的算法服务提供商及解决方案供应商,提供免费、离线的人脸识别SDK,主要包含人脸检测、性别检测、年龄检测、人脸识别、图像质量检测、RGB活体检测、IR活体检测等能力。支持主流Windows、Linux、Android、iOS等平台及Java、C++等开发语言。
本文基于虹软免费人脸识别SDK,从IPC提供的RTSP视频流抓帧进行人脸识别。主要技术方案是通过JavaCV定时抓取视频帧保存为图像,然后针对图像通过虹软SDK提取特征,同特征库里面的人脸进行比较,超过设定的阈值就认为识别到。

2 项目环境
介绍项目中主要使用到的开发库及开发工具。

  • 虹软人脸识别SDK。提供人脸识别相关开发接口。本文使用Windows X64 Java版本,ArcSoft_ArcFace_Java_Windows_x64_V3.0。
  • 下载地址:虹软官网开发者中心 https://ai.arcsoft.com.cn (https://ai.arcsoft.com.cn)。

  • JavaCV。是一款基于JavaCPP调用方式(JNI的一层封装),提供了在计算机视觉领域的封装库,封装了包含FFmpeg、OpenCV、tensorflow、caffe、tesseract、libdc1394、OpenKinect、videoInput和ARToolKitPlus等在内的计算机视觉领域的常用库和实用程序类。本文使用javacv-platform-1.5.1-bin版本。
  • 下载地址:github https://github.com/bytedeco/javacv 也可以通过Maven的方式下载必要的jar包。

  • Eclipse。一个开放源代码的、基于Java的可扩展开发平台。用于Java项目的工程化组织。本文使用Oxygen Release (4.7.0)。
  • 下载地址:Eclipse官网 https://www.eclipse.org/downloads/
    4) JDK。提供Java开发环境。本文使用jdk-8u181-windows-x64版本。

    下载地址:Oracle官网 https://www.oracle.com/java/
    3 整体流程

    整体流程包括各种初始化,启动RTSP视频流监测线程,启动人脸识别任务,如下图所示:
    在这里插入图片描述
    4 工程概况

    创建一个常规的Java项目,引入必要的第三方jar包。

  • 引入虹软人脸识别jar包。
  • arcsoft-sdk-face-3.0.0.0.jar

  • 引入JavaCV必要的jar包。
  • artoolkitplus.jar

    ffmpeg.jar

    ffmpeg-windows-x86_64.jar

    flandmark.jar

    flycapture.jar

    javacpp.jar

    javacv.jar

    leptonica.jar

    libdc1394.jar

    libfreenect.jar

    libfreenect2.jar

    librealsense.jar

    openblas.jar

    opencv.jar

    tesseract.jar

    videoinput.jar

  • 引入log4j相关jar包。
  • slf4j-api-1.7.25.jar

    slf4j-log4j12-1.7.25.jar

    log4j-1.2.17.jar

    Java工程结构如下图所示:
    在这里插入图片描述
    运行的时候,需要将虹软SDK核心DLL拷到jar包所在目录。

    5 效果展示
    工程以常规java项目运行,通过日志观察识别效果。打印识比对分值和人脸库的文件名。如下图所示:
    在这里插入图片描述
    6 核心代码说明
    6.1 配置文件

    #人脸识别相关参数

    config.FaceAppId = 3D9hF3f4uNxgDGRkRr9PD6P7CbuSC1GrPe5dBnxxxxx

    config.FaceSdkKey = 2aSheKNE4aMokrkRmn5qJ7kvPirhZM7YpDLx

    config.FaceThreshold = 0.75

    #人脸库图片所在路径

    config.FaceLibPath = d:/facelib/

    #rtsp视频流地址

    config.RtspUrl = rtsp://192.168.0.100:554/live/camera

    #执行任务的线程数量

    config.ThreadNum = 16

    AppId和SdkKey根据虹软开发者中心实际应用情况配置。配置项通过ConfigMgr类加载。
    在这里插入图片描述
    6.2 虹软人脸识别接口封装类

    主要对核心方法进行封装,包括初始化、特征提取、特征比对,是对虹软SDK提供的接口进行封装。
    在这里插入图片描述
    初始化引擎代码:

    public static boolean init(String _sAppID, String _sSdkKey)
           m_oFaceEngine = new FaceEngine();
           // 引擎激活
           int iFaceActiveCode = m_oFaceEngine.activeOnline(_sAppID, _sSdkKey);
           if (iFaceActiveCode != ErrorInfo.MOK.getValue() &&
                         iFaceActiveCode != ErrorInfo.MERR_ASF_ALREADY_ACTIVATED.getValue())
               logger.error("人脸识别引擎在线激活失败!({})", iFaceActiveCode);
               return false;
           // 引擎配置
           EngineConfiguration oEngineConfiguration = new EngineConfiguration();
           oEngineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE);
           oEngineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_0_ONLY);
           // 功能配置
           FunctionConfiguration oFunctionConfiguration = new FunctionConfiguration();
           oFunctionConfiguration.setSupportFaceDetect(true);
           oFunctionConfiguration.setSupportFaceRecognition(true);
           oFunctionConfiguration.setSupportAge(false);
           oFunctionConfiguration.setSupportGender(false);
           oEngineConfiguration.setFunctionConfiguration(oFunctionConfiguration);
           // 初始化引擎
           int iFaceInitCode = m_oFaceEngine.init(oEngineConfiguration);
           if (iFaceInitCode != ErrorInfo.MOK.getValue
    1 概述      人脸识别技术是随着技术发展而产生的生物识别技术,目前已广泛应用于安防领域,主要用于身份验证和身份识别。视频监控是安防系统常见的一种表现形式,需要部署各种摄像头,包括网络摄像头IPC,可以通过流媒体如RTSP视频流的方式供第三方系统集成。      虹软是计算机视觉行业领先的算法服务提供商及解决方案供应商,提供免费、离线的人脸识别SDK,主要包含人脸检测、性别检测、年龄检测、人脸识别、图像质量检测、RGB
    ## 开发环境准备: ###开发 使用 到的软件和工具: * Jdk8、mysql5.7、libarcsoft_face.dll(so)、libarcsoft_face_engine.dll(so)、libarcsoft_face_engine_jni.dll(so)、idea * 注:libarcsoft_face.dll(so)、libarcsoft_face_engine.dll(so)、libarcsoft_face_engine_jni.dll(so)、app-id、sdk-key可以到 虹软 官网 http://ai.arcsoft.com.cn/ 免费申请下载 * 本地配置: date: 2022-05-15 21:05:52.974 updated: 2023-05-16 00:00:11.594 url: https://www.yby6.com/archives/face categories: - Java 分类 - 从零玩转系列 - 人脸识别 tags: - java - 人脸识别 在线demo (前往享受 人脸识别 ...
    目前在 人脸识别 领域中,网络摄像头的 使用 很普遍,但接入网络摄像头和 人脸识别 SDK有一定门槛,在此篇中介绍过 虹软 人脸识别 SDK的接入 程,本文着重介绍网络摄像头获取 视频流 并处理的 程(红色框内),以下内容仅供参考。 市面上目前有很多款网络摄像头,以海康摄像头为例。海康SDK包含很多接口,接入有一定难度,这里只介绍获取视频帧相关的接口。1.海康SDK接入基本 ...
    生物识别服务操作说明 版本号:v1.03.01 文章目录生物识别服务操作说明1服务核心功能1.1人脸私有化服务1.2智能抓拍功能一、2基础管理2.1用户管理2.2角色管理3人脸管理3.1识别记录3.2人脸列表3.3分组管理4应用接口4.1应用管理4.2接口说明总结 1服务核心功能 人脸识别 私有化部署(也称为 人脸识别 本地化部署)提供人脸检测、人脸比对、人脸检索、活体检测等 人脸识别 基础能力,基于OAuth2.0对外提供接口服务,可以让 使用 者快速集成 人脸识别 能力,扩展自己 1.1人脸私有化服务 人脸识别 私有化部署
    虹软 人脸识别 JAVA 服务端 开发主要 使用 虹软 提供的 人脸识别 SDK,该SDK包含了人脸检测、性别检测、年龄检测、 人脸识别 、图像质量检测、RGB活体检测、IR活体检测等能力。 在项目环境中, 使用 了Windows X64 Java 版本的ArcSoft_ArcFace_ Java _Windows_x64_V3.0作为开发库,并通过ConfigMgr类加载配置项,包括AppId和SdkKey,根据实际应用情况进行配置。 针对 虹软 提供的SDK,开发者可以通过 Java CV定时抓取视频帧保存为图像,然后 使用 虹软 SDK提取图像的特征,再与特征库中的人脸进行比较,通过设定的阈值来判断是否识别到人脸。这个技术方案适用于从IPC提供的 RTSP 视频流 进行 人脸识别 。 总结起来, 虹软 人脸识别 JAVA 服务端 开发主要是利用 虹软 提供的 人脸识别 SDK,通过 Java CV抓取视频帧并提取特征,来实现 人脸识别 功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [基于 RTSP 视频流 Java 后台 服务端 虹软 人脸识别 ](https://blog.csdn.net/qq_40110356/article/details/110820564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]