百度云实现人脸识别(React)

识别代码前两部跟上传一样,最后一步上传换成识别接口

百度云链接
上传效果在这里插入图片描述

上传代码

import './ai.scss'
import { useLayoutEffect, useState } from 'react'
import Taro from '@tarojs/taro'
import { baidu } from '../../api/common.api'
import { Camera } from '@tarojs/components'

export default function Ai() {
  const [baidutoken, setbaidutoken] = useState('')

  //拍照
  const takePhoto = (e) => {
    e.stopPropagation()
    //拍照
    Taro.showToast({
      title: '开始拍照',
    })
    const ctx = Taro.createCameraContext()
    if (ctx) {
    }
    ctx.takePhoto({
      quality: 'high',
      success: res => {
        //图片base64编码
        Taro.getFileSystemManager().readFile({
          filePath: res.tempImagePath, //选择图片返回的相对路径
          encoding: 'base64', //编码格式
          success: res => {
            //成功的回调
            console.log(res, 'rers111')
            uploadPhoto(res)
          },
        })
      }, //拍照成功结束
      fail: () => {
        Taro.hideToast()
        Taro.showToast({
          title: '拍照失败',
        })
      },
    }) //调用相机结束
  }

  const getBaiduToken = () => {
    //acess_token获取,qs:需要多次尝试
    baidu()
      .then(res => {
        setbaidutoken(
          res.data.access_token //获取到token
        )
      })
      .catch(err => {
        Taro.showToast({
          title: '报错',
        })
      })
  }

  const uploadPhoto = res => {
    console.log('开始上传')
    //上传人脸进行注册-----test
    Taro.hideToast()
    Taro.showToast({
      title: '开始上传',
    })
    Taro.request({
      url: 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=' + baidutoken,
      method: 'POST',
      data: {
        liveness_control: 'HIGH',
        quality_control: 'HIGH',
        face_sort_type: '1',
        image: res.data,
        image_type: 'BASE64',
        group_id: 'yanglin', //自己建的用户组id
        user_id: 'yl', //这里获取用户昵称
      },
      header: {
        'Content-Type': 'application/json', // 默认值
      },
    })
      .then(res => {
        console.log('上传结果')
        console.log(res, 11111111111111111)
        //做成功判断
        Taro.hideToast()
        toast(res)
      })
      .catch(err => {
        console.log('上传失败')
      })
  }

  const toast = res => {
    let message = '检测失败,请重新上传'
    const code = res.data.error_msg
    switch (code) {
      case 'SUCCESS':
        message = '上传成功'
        break
      case 'pic not has face':
        message = '未捕获到人脸'
        break
      case 'liveness check fail':
        message = '活体检测失败'
        break
      case 'incomplete face':
        message = '人脸不完整'
        break
      case 'face light is not good':
        message = '人脸光照不好'
        break
      case 'pic not has face':
        message = '未捕获到人脸'
        break
      case 'face is fuzzy':
        message = '人脸模糊'
        break
      case 'face is covered':
        message = '人脸有被遮挡'
        break
      case 'mouth is occlusion':
        message = '嘴巴遮挡程度过高'
        break
      case 'right cheek isocclusion':
        message = '右脸遮挡程度过高'
        break
      case 'nose is occlusion':
        message = '右脸遮挡程度过高'
        break
      case 'left cheek is occlusion':
        message = '左脸遮挡程度过高'
        break
      case 'right eye is occlusion':
        message = '右眼遮挡程度过高'
        break
      case 'left eye is occlusion':
        message = '左眼遮挡程度过高'
        break
      case 'left eye is occlusion':
        message = '左眼遮挡程度过高'
        break
      default:
        break
    }

    Taro.showToast({
      title: message,
    })
  }
  useLayoutEffect(() => {
    getBaiduToken()
  }, [])

  return (
    <view className="camera-box">
      <Camera
        devicePosition="front"
        flash="off"
        className="camera"
        onError={() => {
          Taro.showToast({
            title: '拒绝授权',
            icon: 'none',
          })
          Taro.navigateBack()
        }}
      ></Camera>
      <view className="face-box" onClick={takePhoto}>
        <view className="face" type="primary">
          {' '}
          人脸录入{' '}
        </view>
      </view>
    </view>
  )
}

API请求

export async function  baidu (data) {
  return $post(`https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_secret=xxxxxxxxxxx&client_id=xxxxxxxxxxxxxxxxxxxxxxx`, {
    data
  })
}

识别代码

<view class="camera-box">
  <camera device-position="front" flash="off" binderror="error" class="camera"></camera>
  <view class="face-box">
    <button class="face" type="primary" bindtap="takePhoto"> 人脸识别 </button>
  </view>
</view>

 validPhoto() {
    var that = this;
    //上传人脸进行 比对
    Taro.request({
      url: 'https://aip.baidubce.com/rest/2.0/face/v3/search?access_token=' + baidutoken,
      method: 'POST',
      data: {
        image: base64,
        image_type: 'BASE64',
        group_id_list: 'yanglin', //自己建的用户组id
      },
      header: {
        'Content-Type': 'application/json' // 默认值
      },
      success(res) {
        //做成功判断
        if (.data.msg == "pic not has face") {
          Taro.showToast({
            title: '未捕获到人脸',
            icon: 'error',
          })
        }
        if (res.data.msg == 'SUCCESS') {
          if(res.data.result.user_list[0].score>80){
            Taro.showToast({
              title: '人脸识别成功',
              icon: 'success',
            })
          }else{
            Taro.showToast({
              title: '人脸识别失败',
              icon: 'error',
            })
          }
        }
      }
    });
  }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
React 是一个流行的 JavaScript 库,用于构建用户界面。人脸识别是一种生物识别技术,可以通过分析和比较人脸特征来验证或识别个人身份。结合 React人脸识别技术,可以实现人脸识别注册登录系统。 以下是实现人脸识别注册登录的一些步骤: 1. 安装必要的依赖项:在 React 项目中,需要使用一些依赖项来实现人脸识别功能。例如,FaceAPI.js 是一个流行的 JavaScript 库,可以用于人脸检测和识别。 2. 创建注册页面:在注册页面中,用户需要提供他们的基本信息,例如姓名、电子邮件地址和密码。此外,用户还需要进行人脸采集,以便系统可以识别他们的身份。可以使用摄像头或上传照片来采集人脸图像。 3. 创建登录页面:在登录页面中,用户需要输入他们的电子邮件地址和密码。系统将使用人脸识别技术来验证用户的身份。如果用户已经进行了人脸采集,系统将与采集的图像进行比较,以确认用户的身份。 4. 集成人脸识别技术:在 React 应用程序中,可以使用 FaceAPI.js 或其他人脸识别库来实现人脸识别功能。例如,可以使用 FaceAPI.js 来检测用户的面部特征,并将其与预先注册的面部特征进行比较,以确定用户的身份。 5. 存储用户数据:为了实现注册登录功能,需要将用户数据存储在数据库中。可以使用 Firebase 或其他后端服务来存储用户数据。 6. 安全性:在实现注册登录系统时,需要考虑安全性问题。例如,需要确保用户的密码和其他敏感信息得到妥善保护。此外,还需要防止恶意用户利用人脸识别漏洞来欺骗系统。 以上是实现人脸识别注册登录的一些基本步骤。需要注意的是,这是一项复杂的任务,需要深入了解 React人脸识别技术才能实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值