Android打开相机进行人脸识别,使用虹软人脸识别引擎

本文介绍了如何在Android应用中利用虹软的FreeSDK进行人脸识别,包括人脸追踪、检测和识别功能。文章详细阐述了实现逻辑,如相机预览数据的处理、人脸框的绘制和回调数据,以及前后摄像头的适配。此外,还提到FR引擎的线程限制及项目源码链接。
摘要由CSDN通过智能技术生成

上一张效果图,渣画质,能看就好


功能说明:

    人脸识别使用的是虹软的FreeSDK,包含人脸追踪,人脸检测,人脸识别,年龄、性别检测功能,其中本demo只使用了FT和FR(人脸追踪和人脸识别),封装了开启相机和人脸追踪、识别功能在FaceCameraHelper中。

实现逻辑:

    打开相机,监听预览数据回调进行人脸追踪,且为每个检测到的人脸都分配一个trackID(上下帧位置变化不大的人脸框可认为是同一个人脸,具体实现的逻辑可见代码),同时,为了人脸搜索,为每个trackID都分配一个状态(识别中,识别失败,识别通过)、姓名,识别通过则在人脸框上显示姓名,否则只显示trackID(本demo没配服务端,只做了模拟操作)。流程说明见下图。


FaceCameraHelper包含的接口:

 public interface FaceTrackListener {

        /**
         * 回传相机预览数据和人脸框位置
         *
         * @param nv21        相机预览数据
         * @param ftFaceList  待处理的人脸列表
         * @param trackIdList 人脸追踪ID列表
         */
        void onPreviewData(byte[] nv21, List<AFT_FSDKFace> ftFaceList, List<Integer> trackIdList);


        /**
         * 当出现异常时执行
         *
         * @param e 异常信息
         */
        void onFail(Exception e);


        /**
         * 当相机打开时执行
         *
         * @param camera 相机实例
         */
        void onCameraOpened(Camera camera);

        /**
         * 根据自己的需要可以删除部分人脸,比如指定区域、留下最大人脸等
         *
         * @param ftFaceList  人脸列表
         * @param trackIdList 人脸追踪ID列表
         */
        void adjustFaceRectList(List<AFT_FSDKFace> ftFaceList, List<Integer> trackIdList);

        /**
         * 请求人脸特征后的回调
         *
         * @param frFace    人脸特征数据
         * @param requestId 请求码
         */
        void onFaceFeatureInfoGet(@Nullable AFR_FSDKFace frFace, Integer requestId);
    }

FT人脸框绘制并回调数据:

@Override
    public void onPreviewFrame(byte[] nv21, Camera camera) {
        if (faceTrackListener != null) {
            ftFaceList.clear();
            int ftCode = ftEngine.AFT_FSDK_FaceFeatureDetect(nv21, previewSize.width, previewSize.height, AFT_FSDKEngine.CP_PAF_NV21, ftFaceList).getCode();
            if (ftCod
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值