java实现腾讯云人脸核身pc端和移动端(浏览器)H5接入

java腾讯云人脸核身移动浮层H5接入 java腾讯云人脸核身 阅读详情

PC端H5接入

  1. 获取AccessToken
    作 用: 后续获取签名和接口调用都会用到。
    注意事项: Access Token 必须缓存在磁盘,并定时刷新,且不能并发刷新,建议每20分钟请求新的 Access Token,获取之后立即使用最新的 Access Token。旧的只有一分钟的并存期。
  2. 获取SignTicket
    作 用: 制作签名用到,签名用在后面接口中
    注意事项: 和AccessToken一样
  3. 根据SignTicket生成签名(用于geth5faceid接口)
  4. 调用geth5faceid接口
  5. 获取NonceTicket
  6. 获取H5人脸认证签名
  7. 获取“启动H5人脸合身”链接
    注意事项: 随机数和上面生成签名的随机数保持一致
  • 代码是按照上面7个步骤排列来处理的
  • 代码中用到的HttpClient请求请参考另外一篇文章:http://t.csdn.cn/gQNP9
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.example.facedetection.faceVerify.entity.AccessTokenEntity;
import com.example.facedetection.faceVerify.entity.FaceidRsultEntity;
import com.example.facedetection.faceVerify.entity.SiginTicketEntity;
import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;
import java.io.UnsupportedEncodingException;
import java.util.*;
/**
 * @author kxz
 * @title FaceVerifyPcUtil
 * @Description: 人脸核身Pc端调用工具类(包含部分移动端共用方法)
 * @date 2022/7/9
 */
public class FaceVerifyPcUtil {
    private static String access_token_url = "https://miniprogram-kyc.tencentcloudapi.com/api/oauth2/access_token";
    private static String api_ticket_url = "https://miniprogram-kyc.tencentcloudapi.com/api/oauth2/api_ticket";
    private static String geth5faceid_url = "https://miniprogram-kyc.tencentcloudapi.com/api/server/h5/geth5faceid";
    public static String accessToken = "WAA0f-dGGlQHTVClazkxtmW6FX_nRhpUB01QpWs5MbZluhUFn7WNPkTDcYYesaX-iJtc09MkkN152qd9It4AsQ8Mwg";
    public static String signTicket = "bqpmxJrLtmJYk8BRN9RXhQPeaeWygLEf8QwpPHugBhBURaaLvBYAbXwJXU5NICK7";
    public static void main(String[] args) throws UnsupportedEncodingException {
        // 1.获取AccessToken
        AccessTokenEntity accessTokenEntity = getAccessToken();
        accessToken = accessTokenEntity.getAccessToken();
        System.out.println("====accessToken:"+accessToken);
        // 2.获取签名
        SiginTicketEntity siginTicketEntity = FaceVerifyPcUtil.getSignTicket(FaceVerifyPcUtil.accessToken);
        signTicket = siginTicketEntity.getTickets().get(0).getValue();
        System.out.println("====signTicket:"+signTicket);
    }

    /**
     * 1.获取AccessToken
     * Access Token 必须缓存在磁盘,并定时刷新,且不能并发刷新,
     * 建议每20分钟请求新的 Access Token,获取之后立即使用最新的 Access Token。
     * 旧的只有一分钟的并存期。
     */
    public static AccessTokenEntity getAccessToken(){
        // 请求链接
        String accessTokenUrl = access_token_url
                +"?app_id=" + FaceConfig.APP_ID
                +"&secret=" + FaceConfig.SECRET
                +"&grant_type=" + FaceConfig.GRANT_TYPE
                +"&version=" + FaceConfig.VERSION;
        String accessTokenObj = HttpClientUtil.doGet(accessTokenUrl, "utf-8");

        AccessTokenEntity accessToken = JSON.parseObject(accessTokenObj, AccessTokenEntity.class);
        return accessToken;
    }
    /**
     * 2.获取SignTicket
     * SignTicket 必须缓存在磁盘,并定时刷新,且不能并发刷新,
     * 建议每20分钟请求新的 SignTicket,获取之后立即使用最新的 SignTicket。
     * 旧的只有一分钟的并存期。
      */
    public static SiginTicketEntity getSignTicket(String accessToken){
        // 请求链接
        String accessTokenUrl = api_ticket_url
                        +"?app_id=" + FaceConfig.APP_ID
                        +"&access_token=" + accessToken
                        +"&type=" + FaceConfig.TYPE_SIGN
                        +"&version=" + FaceConfig.VERSION;
        String signTicketObj = HttpClientUtil.doGet(accessTokenUrl, "utf-8");
        SiginTicketEntity siginTicketEntity = JSON.parseObject(signTicketObj, SiginTicketEntity.class);
        return siginTicketEntity;
    }

    // 3. 生成签名(用于geth5faceid接口)
    public static String getSignTicketSign(String orderNo, String userId, String userName, String idCard, String signTicket){
        // 获取SIGN ticket
        List<String> list = new ArrayList<>();
        // wbappid
        list.add(FaceConfig.APP_ID);
        // orderNo
        list.add(orderNo);
        // name
        list.add(userName);
        // idNo
        list.add(idCard);
        // userId
        list.add(userId);
        // version
        list.add("1.0.0");
        // 生成签名
        String sign = sign(list, signTicket);
        System.out.println("=======sign:"+sign);
        return sign;
    }

    // 4. 调用geth5faceid接口
    //    API ticket 的 NONCE 类型,其有效期为120秒,且一次性有效,即每次启动 SDK 刷脸都要重新请求 NONCE ticket。
    public static FaceidRsultEntity getH5faceid(String name, String idCard, String userId, String orderNo, String sign){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("webankAppId", FaceConfig.APP_ID);
        jsonObject.put("name", name);
        jsonObject.put("orderNo", orderNo);
        jsonObject.put("idNo", idCard);
        jsonObject.put("userId", userId);
        jsonObject.put("version", FaceConfig.VERSION);
        jsonObject.put("sign", sign);
        System.out.println(jsonObject.toString());
        String h5faceidResult = HttpClientUtil.doPost(geth5faceid_url+"?orderNo="+orderNo, jsonObject);
        FaceidRsultEntity faceidRsultEntity = JSON.parseObject(h5faceidResult, FaceidRsultEntity.class);
        return faceidRsultEntity;
    }

    // 5. 获取NONCE ticket
    public static SiginTicketEntity getNonceTicket(String accessToken, String userId){
        // 请求链接
        String accessTokenUrl = api_ticket_url
                +"?app_id=" + FaceConfig.APP_ID
                +"&access_token=" + accessToken
                +"&type=" + FaceConfig.TYPE_NONCE
                +"&version=" + FaceConfig.VERSION
                +"&user_id=" + userId;
        String signTicketObj = HttpClientUtil.doGet(accessTokenUrl, "utf-8");
        SiginTicketEntity siginTicketEntity = JSON.parseObject(signTicketObj, SiginTicketEntity.class);
        return siginTicketEntity;
    }
    // 6. 获取H5人脸认证签名
    public static String getNonceTicketSgin(String orderNo, String userId, String h5faceId, String nonceTicket, String nonce){
        // 获取SIGN ticket
        List<String> list = new ArrayList<>();
        // wbappid
        list.add(FaceConfig.APP_ID);
        // version
        list.add(FaceConfig.VERSION);
        // orderNo
        list.add(orderNo);
        // userId
        list.add(userId);
        // h5faceId
        list.add(h5faceId);
        // nonce 随机数:32位随机串(字母+数字组成的随机数)

        list.add(nonce);
        // 生成签名
        String sign = sign(list, nonceTicket);
        System.out.println(sign);
        return sign;
    }
    // 7. 获取“启动H5人脸合身”链接
    public static String getH5Login(String optimalDomain, String userId, String orderNo, String h5faceId, String url, String signNonce, String nonce) {
        String h5Url = "https://"+optimalDomain+"/api/pc/login"
                + "?webankAppId=" + FaceConfig.APP_ID
                + "&version=" + FaceConfig.VERSION
                + "&nonce="+nonce
                + "&orderNo=" + orderNo
                + "&h5faceId=" + h5faceId
                + "&url=" + url
                + "&userId=" + userId
                + "&sign=" + signNonce;
        System.out.println("=========h5Url:"+h5Url);
        return h5Url;
    }
    // 签名公共方法
    protected static String sign(List<String> values, String ticket) { //values传ticket外的其他参数
        if (values == null) {
            throw new NullPointerException("values is null");
        }
        values.removeAll(Collections.singleton(null));// remove null
        values.add(ticket);
        java.util.Collections.sort(values);

        StringBuilder sb = new StringBuilder();
        for (String s : values) {
            sb.append(s);
        }
        return Hashing.sha1().hashString(sb, Charsets.UTF_8).toString().toUpperCase();
    }
    // 获取任意长度随机字符串
    public static String randomAlphanumeric(){
        String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random random = new Random();
        //指定字符串长度,拼接字符并toString
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < 32; i++) {
            //获取指定长度的字符串中任意一个字符的索引值
            int number = random.nextInt(str.length());
            //根据索引值获取对应的字符
            char charAt = str.charAt(number);
            sb.append(charAt);
        }
        System.out.println("===========32位字符串:"+sb.toString());
        return sb.toString();
    }
}

移动端H5接入

  • 基本和Pc端步骤一样,只是个别调用接口名称和参数及返回值名称做了改变。
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.example.facedetection.faceVerify.entity.FaceidRsultEntity;
import java.util.ArrayList;
import java.util.List;

/**
 * @author kxz
 * @title FaceVerifyModUtils
 * @Description: 仅包含移动端独有方法,公用方法调用FaceVerifyPCUtil
 * @date 2022/7/11
 */
public class FaceVerifyModUtils {
    private static String ADVFACE_URL = "https://miniprogram-kyc.tencentcloudapi.com/api/server/getAdvFaceId";
    // 1. 获取Sign ticket--与pc端共用,此处略
    /**
     * 2. 生成SIGN ticket签名
     * @param userId 用户 ID ,用户的唯一标识(不要带有特殊字符)
     * @param signTicket Sign ticket获取的值
     * @param nonce 32位随机数
     * @return
     */
    public static String getSignTicketSign(String userId, String signTicket, String nonce){
        // 获取SIGN ticket
        List<String> list = new ArrayList<>();
        // wbappid
        list.add(FaceConfig.APP_ID);
        // userId
        list.add(userId);
        // version
        list.add("1.0.0");
        // 32位随机数
        list.add(nonce);
        // 生成签名
        String sign = FaceVerifyPcUtil.sign(list, signTicket);
        System.out.println("=======sign:"+sign);
        return sign;
    }

    /**
     * 3. 调用AdvFaceId接口
     * @param orderNo 订单号,字母/数字组成的字符串,每次(同一次人脸核身)唯一,不能超过32位
     * @param name 姓名
     * @param idCard 证件号码
     * @param userId 用户 ID ,用户的唯一标识(不能带有特殊字符),需要跟生成签名的 userId 保持一致
     * @param ticketSign 签名:使用上面生成的签名
     * @param nonce 随机数(和上面签名随机数保持一致)
     * @return
     */
    public static FaceidRsultEntity getAdvFaceId(String orderNo, String name, String idCard, String userId, String ticketSign, String nonce){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("appId", FaceConfig.APP_ID);
        jsonObject.put("orderNo", orderNo);
        jsonObject.put("name", name);
        jsonObject.put("idNo", idCard);
        jsonObject.put("userId", userId);
        jsonObject.put("version", FaceConfig.VERSION);
        jsonObject.put("sign", ticketSign);
        jsonObject.put("nonce", nonce);
        // post请求
        String h5faceidResult = HttpClientUtil.doPost(ADVFACE_URL+"?orderNo="+orderNo, jsonObject);
        FaceidRsultEntity faceidRsultEntity = JSON.parseObject(h5faceidResult, FaceidRsultEntity.class);
        return faceidRsultEntity;
    }
    // 4. 获取NonceTicket-使用pc端的,此处略
    // 5. 生成Nonce签名
    public static String getNonceTicketSign(String orderNo, String userId, String faceId, String noceTicketSign, String nonce){
        // 获取SIGN ticket
        List<String> list = new ArrayList<>();
        // wbappid
        list.add(FaceConfig.APP_ID);
        // orderNo
        list.add(orderNo);
        // userId
        list.add(userId);
        // faceId
        list.add(faceId);
        // version
        list.add("1.0.0");
        // 32位随机数
        list.add(nonce);
        // 生成签名
        String sign = FaceVerifyPcUtil.sign(list, noceTicketSign);
        System.out.println("=======sign:"+sign);
        return sign;
    }

    /**
     * 6. 生成“启动H5人脸核身”链接
     * @param optimalDomain 必填;使用getAdvFaceId接口返回的 optimalDomain 域名
     * @param nonce 必填;随机数:32位随机串(字母 + 数字组成的随机数),需与Nonce签名保持一致
     * @param orderNo 必填;订单号,字母/数字组成的字符串,每次唯一,此信息为本次人脸核身上送的信息,不能超过32位
     * @param faceId 必填;getAdvFaceId接口返回的唯一标识
     * @param url 必填;H5 人脸核身完成后回调的第三方 URL,需要第三方提供完整 URL 且做 URL Encode
     * @param resultType 非必填;是否显示结果页面,参数值为“1”时直接跳转到 url 回调地址,null 或其他值跳转提供的结果页面
     * @param userId 必填;用户 ID ,用户的唯一标识(不要带有特殊字符)
     * @param noceSign 必填;签名:使用上面Nonce生成的签名
     * @param from 必填;browser:表示在浏览器启动刷脸;App:表示在 App 里启动刷脸,默认值为 App;公众号属于浏览器
     * @param redirectType 非必填;跳转模式,参数值为“1”时,刷脸页面使用 replace 方式跳转,不在浏览器 history 中留下记录;不传或其他值则正常跳转
     * @return
     */
    public static String getLoginUrl(String optimalDomain, String nonce, String orderNo, String faceId,
                                     String url, String resultType, String userId, String noceSign, String from,
                                     String redirectType){
        StringBuilder sb = new StringBuilder("https://");
        sb.append(optimalDomain).append("/api/web/login");
        sb.append("?webankAppId=").append(FaceConfig.APP_ID);
        sb.append("&version=").append(FaceConfig.VERSION);
        sb.append("&nonce=").append(nonce);
        sb.append("&orderNo=").append(orderNo);
        sb.append("&faceId=").append(faceId);
        sb.append("&url=").append(url);
        sb.append("&resultType=").append(resultType);
        sb.append("&userId=").append(userId);
        sb.append("&sign=").append(noceSign);
        sb.append("&from=").append(from);
        sb.append("&redirectType=").append(redirectType);
        System.out.println("=========h5Url:"+ sb);
        return sb.toString();
    }
}

付完整demo,开箱即用:https://download.youkuaiyun.com/download/just_you_java/86092683

参考文档:

  1. 腾讯云-PC 端 H5 接入
  2. 腾讯云-移动 H5 人脸核身介绍
调用腾讯云人脸识别 1、先获取faceid 获取faceID需要有webankAppId(腾讯云APPID)、orderNo(可使用时间戳随机生成)、name、idNo、userId(这个随意只要是唯一标识就可以)、version(版本)、sign(获取sign前要获取access_token和signticket) a、获取token String requestUrl = "https://idasc.we... 阅读详情

相关推荐

vue结合tracking.js,实现web端人脸识别功能

vue结合tracking.js,实现web端人脸识别功能实现人脸识别 实现人脸识别 一、tracking.js下载: 1、官网下载 tracking.js 的代码包,功能更全面一些,是官网最新更新的 官网地址: https://trackingjs.com/ 2、npm 安装 执行命令: npm install tracking ,装完之后node_modules下会有tracking文件夹。 二、demo测试 一个简单的办法,在 tracking 文件夹下查看目录,能看到一个叫作 example 的文件

江小白的博客 3806

接入腾讯活体SDK

001 请求接口获取到接入参数 接入 代理WBFaceVerifyCustomerServiceDelegate @property (nonatomic, copy) NSString *appid; @property (nonatomic, copy) NSString *nonce; @property (nonatomic, copy) NSString *sign; @property (nonatomic, copy) NSString *orderNO; @property (nona.

Coding_Physical的专栏 933

腾讯云-人脸核身java开发Demo

1. 开箱即用,导入到idea中即可 2. 修改FaceConfig.java中APP_ID和SECRET为自己申请的腾讯人脸核身ID和秘钥即可 3. 可以先看readme.md有对项目结构介绍 4. 参考博客:http://t.csdn.cn/hfjUd

android视频图片上传,适配Android WebView支持上传图片,视频

问题原因:H5访问本地文件的时候, 使用的 ,WebView 出于安全性的考虑,是限制了以上操作。解决办法:重写 WebviewChromeClient 中的 openFileChooser() 和 onShowFileChooser()方法响应,然后使用原生代码来实现调用本地相册和拍照的功能,最后在 onActiivtyResult 把选择的图片 URI 回传给 WebviewChromeCli...

weixin_36228865的博客 711

腾讯云接口调用案例

腾讯云文字识别、 智能鉴黄 图片标签 文字识别 人脸识别 人脸核身 人脸支付 人脸融合 语音识别 语音合成 声纹识别 写好的java代码案例,拿过来直接可以使用,十分方便。 重要的事情说三遍:写好的java代码案例,拿过来直接可以使用。 写好的java代码案例,拿过来直接可以使用。 写好的java代码案例,拿过来直接可以使用。

Modem2G/3G/4G/5G:RFFE Driver(射频前端驱动):高通平台GRFC配置方法

文 | GentlemanTsao 文章目录前言1.什么是GRFC2.GRFC的配置流程概览3.msm_sig_info的配置与分析msm_sig_info Table位置:msm_sig_info Table示例:Table元素解读:rfc_msm_sig_info_type结构体signal typemsm_gpio |grfc_num:GPIO到GRFC的映射output_typefunction_select4._sig_cfg的配置与分析_sig_cfg table位置:_sig_cfg tabl

GentelmanTsao的博客 7311

uiapp java 对接 人脸核身 全代码流程

调用sdk 时生成 所需的sign签名 时传递的 ticket 是 NONCE类型。所以第二次调用后端接口传递的 type位 NONCE。uiapp调用接口获取 faceId ,注意 :获取faceId 中 的 sign签名 生成时传递的 Ticket 是 SIGN类型。以下操作确保已经申请了 腾讯的人脸核身服务 并拿到 appid 、Secret 与对应 license。官方技术人员微信(vx:faceid001)第一步 :获取 accessToken。第三步获取sign签名。

A15552057871的博客 929

IAR安装成功的关键:STM32设备支持文件导入方法

IAR安装常卡在设备支持缺失这一步——尤其对STM32新手,没导入对应芯片包,编译直接报错。实测发现,必须通过IAR的Tools→Options→IDE→Configuration→Device Support手动加载STM32设备支持文件,否则新建工程时连芯片型号都选不到。IAR安装是否顺利,往往就差这一步。

weixin_42527589的博客 678

腾讯云人脸核身基础版SDK接入-Java

腾讯云人脸核身接口文档。

mcband的博客 1652

BU61580芯片实战:手把手教你配置1553B通信的BC端寄存器(含代码解析)

本文详细解析了BU61580芯片在1553B通信中的BC端寄存器配置方法,包括关键寄存器功能映射、初始化代码解析及回环测试实现。通过实战案例和代码示例,帮助开发者快速掌握1553B通信的核心技术,提升系统稳定性和通信质量。

a1b2c的博客 223

Mac M1安装Hive

如果你确定装过mysql,但是执行上述命令后,发现不存在mysql命令,那说明你的系统环境没有配置。出现一段空白,接着出现Initialization script completed。关闭hiveServer2时,执行如下命令查看hive进程;执行上面命令后,若有结果输出,则证明配置完成了。如果出现mac权限问题,解决方法参考。就可以见到hive的web界面了。若出现路径,则存在mysql。配置好后保存,使配置文件生效。用户名hive,密码hive。用户名通过如下命令查看。通过如下命令杀死该进程。

总结复盘,才能不迷失自己! 2386

AI 腾讯云人脸核身之独立H5接入

AI 腾讯云人脸核身之独立H5接入

Gblfy_Blog 5183

Ubuntu 22.04 上 Mezzanine CMS 完整安装指南

CMS(内容管理系统)是构建博客、企业官网等静态与动态内容混合站点的核心技术栈;Django 作为 Python 生态中最成熟的 Web 框架,凭借其 ORM、Admin 和安全机制,成为 CMS 开发的首选基础。Mezzanine 是基于 Django 的轻量级 CMS,以开箱即用、零配置多语言和内置 SEO 工具为特色,特别适合中小项目快速落地。在 Ubuntu 这类强调稳定性的服务器操作系统上部署时,关键挑战并非代码逻辑,而是系统层依赖协同——如 Python 版本锁定、SQLite FTS5 支持、

weixin_33508411的博客 304

vue tracking 前端人脸识别 有个不大不小的坑

vue tracking 业务需求 前端检测人脸(必须是含有人脸的时候才拍照,没有人脸的时候不拍照) 拍照完成自动上传服务端,进行识别验证用户信息 业务实现流程 1.官网下载demo,官网download 官网地址:tracking官网直通车 ...

SeeSee 3805

C# Winform使用Monaco打造代码编辑器

本文介绍了如何在Winform项目中集成Monaco代码编辑器。通过NuGet安装WebView2控件,创建monaco-editor.html文件加载编辑器,并实现与C#代码的交互。关键步骤包括:初始化WebView2环境、配置Monaco编辑器参数、设置代码变更监听事件以及处理C#与JavaScript之间的通信。注意事项提示了依赖库安装问题的解决方法。该方案实现了功能完整的代码编辑器,支持代码自动保存和实时显示功能。

遇见--专栏 346

ESP32 物联网宠物喂食器:实现远程智能投喂的完整方案

本项目基于 ESP32 实现了智能宠物喂食器的核心功能,硬件结构简单、成本较低,软件支持远程控制和状态监测。添加摄像头:通过 ESP32-CAM 模块实时观察宠物进食情况。APP 集成:开发专属手机 APP,支持定时设置、报警推送、喂食记录查询。语音控制:结合 Alexa 或小爱同学,实现语音指令喂食。太阳能供电:户外使用时,通过太阳能板为设备供电,节能环保。

weixin_42300449的博客 1272

VUE项目-H5端人脸识别功能实现

1.人脸捕捉技术使用的tracking.js,关键是要理解它的运作原理和一下参数配置。2.因为要调用手机媒体设备,兼容性问题是大问题,特别是苹果手机的问题,往往不知道如何下手,需要有丰富的开发经验和各种曲线救国的开发思想。

Jack, what else can you do besides holding your little darling? 9839

第95节:多模型多卡推理管理

多模型推理:在同一硬件平台上同时部署多个不同或相同的深度学习模型,满足多任务需求。多卡推理:利用多块 GPU 资源,提升推理吞吐量与并发能力。目标:合理分配 GPU 资源,实现高效、低延迟的推理服务。

yumeiguo的博客 217

H5 (vue-2)实现人脸识别 (傻瓜式教学 一眼即会)

一 首先百度智能云-智能时代基础设施 1.注册百度智能云账号 2. 创建应用 API KeySecret Key 会给你这俩个key 3.当然 别忘记 在外面去领一下 免费的使用额度 一键全选 都领取最好 4.开始对接业务接口了 第一个接口获取Access Token https://aip.baidubce.com/oauth/2.0/token POST 并在URL中带上以下参数 注意是在url里 !!! grant_type:...

m0_64000600的博客 1766

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android WebView上传图片到h5

第一步 要设置webView支持js setJavaScriptEnabled 第二步要设置 WebView setWebChromeClient的事件此事件有几个方法 先声明一个各个版本对应的参数 private ValueCallback<Uri> mUM; //For Android 3.0+ public void openFileChooser(V...

Alone的博客 1047

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

vue html5 人脸识别登录

基本原理就是通过浏览器相关api打开本地摄像头,然后把视频流传给video标签播放出来,通过canvas进行图片截取,不断生成图片,进行人脸比对。 1、调取本地摄像头 <!--展示摄像头视频流--> <video ref="video" width="462" height="462" autoplay></video> <!-- canvas截取图片 --> <canvas cla

jmszl1991的博客 2196

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

h5 视频活体检测(人脸认证)的前端

调百度云h5视频活体检测接口,功能是在H5场景下,通过用户新录制并上传一个视频,来进行活体检测的判断。 兼容性比较好的做法是通过input去打开手机系统原生的录像界面 <input type="file" accept="video/*" capture="camcorder" ref="videoFile" @change="changeVideo($event)"> 还有一种做法就是使用h5的新属性getUserMedia、MediaRecorder getUserMedia兼容目

cn594740的博客 6364

腾讯云人脸核身接口调用 浮层PC版

【代码】腾讯云人脸核身接口调用 浮层PC版。

Siegelion_的博客 695

工具方法(二)-java实现腾讯人脸核身功能(bizToken获取、用户认证信息获取)

<dependency> <groupId>com.tencentcloudapi</groupId> <artifactId>tencentcloud-sdk-java</artifactId> </dependency> /************腾讯云配置*************/ private static String sec...

RemainderTime 3355

web/h5接入腾讯云人脸核身

web/h5接入腾讯云人脸核身 web/H5接入腾讯云的人脸核身和ios/andorid接入人脸核身的步骤是一样的,简单概述一下: 需要先在腾讯云的人脸核身发起申请appid的流程,这个需要联系线下获取,有问题可以留言或者评论 合作方后台上送身份信息.这个需要先生成签名,需要将参数按照字典序排序拼接成一个字符串将其进行 SHA1 编码,编码后的40位字符串作为签名,之后再将身份证信息以及相关参...

Littlebearaa的博客 4053

uni App+H5 实现人脸识别

uni App+H5 实现人脸识别 通过h5的视频video管理设备摄像头(不要关),在打开视频摄像时快照截取人脸照片传送到后台通过API接口调用百度人脸识别结果并通过返回数据解析自己业务需求。 1.创建LivePusher对象 that.pusher = plus.video.createLivePusher('livepusher', { url: '', top: '0px', left: '0px', width: '50%', height: '50%'

qq_32640257的博客 7423
上一篇: java实现HttpClient请求
下一篇: git回退到某个指定的版本,并提交此版本
just_you_java
博客等级 码龄12年 1689粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值