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代码案例,拿过来直接可以使用。

永磁同步电机功率计算实战:从公式到避坑指南(附Excel计算模板)

本文详细解析永磁同步电机(PMSM)功率计算的实战技巧,涵盖三维参数体系、三相与单相系统差异、动态工况补偿及常见计算陷阱。特别提供Excel计算模板,帮助工程师快速准确完成功率计算,避免工业应用中的常见错误,提升工作效率。

x8y9z0的博客 800

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

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

A15552057871的博客 929

ROS Noetic + Realsense ROS 2.3.2 在鲁班猫4上的完整工作空间搭建与相机启动调试

本文详细介绍了在鲁班猫4(RK3588S)开发板上搭建ROS Noetic与Realsense ROS 2.3.2开发环境的完整流程,包括Realsense SDK安装、工作空间配置、D435i深度相机驱动调试等关键步骤,为机器人视觉系统开发提供实用指南。

weixin_33217202的博客 234

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

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

mcband的博客 1652

《通信工程施工与管理》

制作馈线接头必须使用专用的工具,专用工具包括:馈线切割刀、馈线安全刀、小金属丝毛刷、固定尺寸或大号活动扳手、小号扁锉刀、细齿小手锯、接头扩孔器、3M防水胶或防水接头盒;如图所示,详情如表所示。

2302_78710464的博客 1653

【论文阅读1】机理引导的残差学习用于电池全生命周期状态监测 | Nature Communications

本文提出了一种机理引导的残差学习框架,用于提升电池全生命周期内荷电状态(SOC)和健康状态(SOH)的监测精度。该方法融合等效电路模型的先验知识与机器学习,设计了修正模型和补偿模型两种通用框架。实验验证表明,该方法在三种不同类型电池数据集上均表现出色,SOC和SOH估计误差较传统方法降低50%以上,且在未见工况下仍保持良好外推能力。模型具有强鲁棒性,在减少训练数据量和降低采样频率时性能稳定,并兼具物理可解释性。该框架无需离线测试和运行中校准,为电池安全监测提供了有效解决方案。

qq_21843433的博客 613

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

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

Gblfy_Blog 5183

手把手教你用STM32CubeMX和HAL库驱动MT6835磁编码器(SPI读取21位角度)

本文详细介绍了如何使用STM32CubeMX和HAL库驱动MT6835磁编码器,通过SPI接口读取21位高精度角度数据。从硬件准备、CubeMX配置到HAL库驱动实现与优化,提供了完整的实战指南,帮助开发者快速掌握磁编码器的应用技巧,适用于机器人关节和精密仪器等高精度场景。

weixin_28716769的博客 439

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

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

SeeSee 3805

华为OD机试 - 矩形绘制 - 数组、坐标偏移(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。实现一个简单的绘图模块,绘图模块仅支持矩形的绘制和擦除。 当新绘制的矩形与已有图形重叠时,对图形取并集; 当新擦除的矩形与已有图形重叠时,对图形取差集。 给定一系列绘制和擦除操作,计算最终图形的面积。第一行为操作数N,接下来的N行格式为:d x1

学Java,找哪吒 835

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

AI人人懂 2150

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

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

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

3D iToF深度分辨率测量

本文展示了RGB-D传感器在三维测量中的高精度表现。标靶深度图显示其具备清晰、低噪、无干扰的特性,点云数据完整度高且轮廓分明。该技术已成功应用于物流(体积测量误差<1%)、工业(高反光部件装配检测)和农业(果蔬成熟度分级)等领域,验证了其硬件和算法的可靠性,能够满足不同场景下的三维测量需求。

dream it possible 251

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android WebView上传图片到h5

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

Alone的博客 1047

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

vue html5 人脸识别登录

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

jmszl1991的博客 2196

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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、付费专栏及课程。

余额充值