uniapp人脸识别,小程序(采用百度云人脸识别)

百度人脸识别流程:api地址

  1. 百度智慧云人脸识别创建应用
  2. 获取百度access_token
  3. 携带access_token进行人脸检测或添加人脸库
  4. 检测成功后再调用后端接口


1.百度智慧云设置

百度智慧云网址icon-default.png?t=N7T8https://cloud.baidu.com/product/face        

2.html代码

<template>
  <view class="p-30">
    <view class="flex items-center justify-center  pt-50">
      <camera class="camera-class" device-position="front" flash="off"
              @error="error"></camera>
    </view>
    <view class="flex items-center justify-center flex-col pt-50">
      <view class="pb-20">1.正对手机</view>
      <view class="pb-20">2.光线充足</view>
      <view class="pb-20">3.放慢动作</view>
    </view>
    <xxz-button text="开始检测" @ok="takePhoto"></xxz-button>
  </view>
</template>

<style lang="scss" scoped>
.camera-class {
  width: 550rpx;
  height: 650rpx;
  border-radius: 50%;
}
</style>

效果图

3.js代码

<script lang="ts" setup>
import {ref} from 'vue';
import {xxzErrorToast, xxzSuccessToast} from "@/components/xxzComponents/xxz-toast/xxzHookToast";
import {xxzUtilsImgToBase64} from "@/utils/XxzUtils";
import {postAction} from "@/utils/request";
import config from "@/config";
import userInfoStore from "@/stores/modules/userInfo";

/**
 * error
 * 用户不允许使用摄像头时触发
 */
const error = () => {
  xxzErrorToast('请打开摄像头权限')
}

/**
 * 点击拍照
 */
const base64 = ref('')
const accessToken = ref('')
const takePhoto = () => {
  const ctx = uni.createCameraContext();
  ctx.takePhoto({
    quality: 'high',
    success: (res) => {
      //将图片路径转成base64格式
      /**
       * 图片转base64工具
       * @param imgPath
       */
      // export function xxzUtilsImgToBase64(imgPath: string): any {
      //   return new Promise((resolve, reject) => {
      //     const fileSystemManager = uni.getFileSystemManager();
      //     fileSystemManager.readFile({
      //       filePath: imgPath,
      //       encoding: 'base64',
      //       success: res => resolve(res.data),
      //       fail: err => reject(err)
      //     });
      //   });
      // }
      console.log(res)
      xxzUtilsImgToBase64(res.tempImagePath).then(res1 => {
        base64.value = res1
      })
      getBaiduToken()
    }
  });
}

/**
 * 获取百度access_token
 */
const getBaiduToken = () => {
  uni.request({
    url: 'https://aip.baidubce.com/oauth/2.0/token', //是真实的接口地址
    data: {
      grant_type: 'client_credentials',
      client_id: config.bdFaceAPIKey, //用你创建的应用的API Key
      client_secret: config.bdFaceSecretKey //用你创建的应用的Secret Key
    },
    header: {
      'Content-Type': 'application/json' // 默认值
    },
    success(res) {
      accessToken.value = res.data.access_token
      uploadPhoto();
      addFaceToBaidu()
    }
  })
}

/**
 * 检测是否为人脸,真人
 */
const uploadPhoto = () => {
  uni.request({
    url: 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=' + accessToken.value,
    method: 'POST',
    data: {
      image: base64.value,
      image_type: 'BASE64',
      face_type: 'LIVE',
      liveness_control: 'NORMAL'
    },
    header: {
      'Content-Type': 'application/json' // 默认值
    },
    success(res) {
      console.log('是否成功', res.data.error_msg)
      if (res.data.error_msg !== 'SUCCESS') return xxzErrorToast(res.data.error_msg)
      postAction('/user/faceAuth', {
        faceStr: base64.value
      }, {
        'Content-Type': 'application/x-www-form-urlencoded'
      }).then(res1 => {
        if (res1.errCode == '0') {
          xxzSuccessToast(res1.message)
          userInfoStore().userInfo = res1.data
          setTimeout(() => {
            uni.switchTab({
              url: '/tabbar/home/index'
            })
          }, 1500)
        }
      })
    }
  })
}

/**
 * 添加人脸库
 */
const addFaceToBaidu = () => {
  uni.request({
    url: 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=' + accessToken.value,
    method: 'POST',
    data: {
      image: base64.value,
      image_type: 'BASE64',
      user_id: 'test',
      group_id: 'test_group'
    },
    header: {
      'Content-Type': 'application/json' // 默认值
    },
    success(res) {
      console.log('是否成功', res.data.error_msg)
      setTimeout(() => {
        // xxzSuccessToast('你很帅!')
      }, 1500)
    }
  })
}

</script>

### 回答1: 阿里云人脸活体检测是一种基于人工智能技术的人脸识别技术,通过对用户的面部进行实时检测和分析,以验证用户的真实性和活体性。在H5示例中,我们可以使用阿里云人脸活体检测的API接口,将其嵌入到网页中,实现人脸活体检测的功能。 具体步骤如下: 1. 在阿里云开发者平台上创建自己的应用,获取对应的Access Key和Secret Key。 2. 引入阿里云人脸活体检测SDK,在html文件中添加相应的引用。 3. 在需要进行人脸活体检测的地方,添加一个用于显示摄像头画面的画布元素。 4. 编写JavaScript代码,调用阿里云人脸活体检测的API接口。可以使用ajax等方式将用户的摄像头画面上传给阿里云,同时接收阿里云返回的检测结果。 5. 根据API返回的结果,进行相应的处理,如判断用户是否为真实人脸,是否存在动作等。 6. 根据具体需求,可自定义提示语、显示结果等,例如显示“活体检测通过”或“请眨眼”等文字提示。 7. 给予用户适当的反馈,如成功通过活体检测后跳转到另一页,或在检测失败时显示错误提示信息等。 8. 最后,在应用结束时,可调用相关API接口释放资源,避免资源占用。 通过以上步骤,可以实现将阿里云人脸活体检测接入H5示例,使网页能够进行人脸活体检测功能的展示。这样可以帮助开发者更好地应用人脸活体检测技术,提升用户的安全性和用户体验。 ### 回答2: 阿里云人脸活体检测是一种通过识别用户的面部特征以确定其真实性和活跃度的技术。阿里云提供了人脸活体检测接入H5示例,以方便开发者将此功能集成到自己的网页应用中。 首先,开发者需要在阿里云人脸识别控制台创建一个人脸活体检测API实例,并获取相应的API密钥和密钥对应的API密钥ID。 其次,开发者需要在网页应用的代码中引入阿里云人脸识别的JS SDK。开发者可以通过CDN引入阿里云人脸识别的JS SDK,也可以将SDK下载到本地并引入。 接着,开发者需要在网页应用的代码中创建一个用于展示人脸活体检测结果的HTML元素,例如一个div元素。 然后,开发者需要初始化阿里云人脸识别JS SDK,并设置密钥和密钥ID。 最后,开发者需要编写代码来调用阿里云人脸活体检测API,并将检测结果展示在之前创建的HTML元素中。开发者可以通过监听用户在网页中进行的操作(例如点击按钮)来触发人脸活体检测操作,然后将用户的面部特征传递给阿里云人脸识别API进行验证。 总体来说,通过引入阿里云人脸识别的JS SDK,并按照官方文档提供的示例代码进行配置和调用,开发者可以轻松地将阿里云人脸活体检测功能接入到自己的网页应用中。这样,开发者就可以在网页上实时验证用户的真实性和活跃度,提高网站的安全性和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值