【微信小程序+Python实现人脸识别】

2022-3-18

方法一:使用极速API提供的人脸识别API 极速API 教程

免费次数只有五次。。


方法二:使用腾讯云人脸识别中的人脸对比 SDK 每月免费1W

使用SDK文档中的接口调试功能,然后那里可以生成代码,部署到python后端以及相应接口即可。注意这里要将tencent-sdk-python包升级到最新版本

  • 小程序端要提供两个图片的BASE64码
  • Base64码转换源码(末尾是wxml显示base64格式图片代码)
  • 转化源码来自B站刘江艳紫
function getPicFromcenavm(ctx){
  return new Promise(function(resolve,reject){
    ctx.takePhoto({
      quality:'low',
      success:(res)=>{
        //resolve(res.tempImagePath)
        getBase64(res.tempImagePath).then(function(res2){
          resolve(res2.data);
        });
      }
    })
  })

  function getBase64(tempImagePath){
    return new Promise(function (resolve,reject){
      wx.getFileSystemManager().readFile({
        filePath:tempImagePath,
        encoding:'base64',
        success:function(data){
          resolve(data);
        }
      })
    })
  }
}
module.exports = {
  getPicFromcenavm:getPicFromcenavm
}
  • 前端显示base64格式图片
<image src="data:image/png;base64,{{ImageA}}"/>
  • 前端调用后端接口实现人脸登录

注意这里的header在post请求下是必须要的,具体可以看微信的官方文档wx.request

wx.request({
      url: api.Face,
      data:{
        ImageA:this.data.ImageA,
        ImageB:this.data.ImageB
      },
      method: 'POST',
      dataType: 'json',
      header:{
        'content-type':'application/x-www-form-urlencoded'
      },
      success:function(x){
        console.log(x)
      }
    })
  • 腾讯云人脸识别–Python实现

要先下载腾讯云的包 pip3 install tencentcloud-sdk-python

import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.iai.v20200303 import iai_client, models

from utils.response import FaceResponse

def check_face(ImageA, ImageB):
    response = FaceResponse()
    try:
        cred = credential.Credential("AKID1sUqvkJbeQv96mBJAk5Azf8j4A0ZsteB", "IK5ZmkU3C9rLZXFivsa3GDuLXTAbniNm")

        httpProfile = HttpProfile()
        httpProfile.endpoint = "iai.tencentcloudapi.com"

        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = iai_client.IaiClient(cred, "ap-guangzhou", clientProfile)

        req = models.CompareFaceRequest()
        params = {
            "ImageA":ImageA,
            "ImageB":ImageB,
            "NeedRotateDetection": 1
        }
        req.from_json_string(json.dumps(params))

        resp = client.CompareFace(req)
        response.Score = resp.Score
        if(response.Score < 90):
            response.status = False
            response.code = "相似度小于90"
        else:
            response.status = True


    except TencentCloudSDKException as err:
        response.status = False
        response.code = err.code
    return response

这些都是之前开发时候的一些学习记录
本人菜鸟一枚,有错误的地方还望海涵~

微信小程序可以通过调用微信开放平台提供的人脸识别接口来实现人脸识别功能。下面是一个简单的示例代码: 1. 在小程序中引入wx.request函数,用于向后端发送请求。代码示例: ```javascript import wx from 'weixin-js-sdk'; wx.ready(function(){ // 在此处调用wx.request函数向后端发送请求,获取人脸识别结果 }) ``` 2. 后端接收小程序发送的请求,并进行人脸识别。代码示例: ```python import requests import base64 def face_detect(image): # 调用人脸识别API进行人脸检测 url = 'https://api-cn.faceplusplus.com/facepp/v3/detect' data = { 'api_key': 'your_api_key', 'api_secret': 'your_api_secret', 'image_base64': base64.b64encode(image).decode('utf-8'), 'return_attributes': 'gender,age,smiling,emotion' } response = requests.post(url, data=data) return response.json() ``` 在上述代码中,我们使用Face++提供的人脸识别API进行人脸检测。需要将`your_api_key`和`your_api_secret`替换为自己在Face++官网申请的API Key和API Secret。 3. 在前端调用wx.chooseImage函数,用于选择要识别的图片。代码示例: ```javascript wx.chooseImage({ count: 1, // 只能选择一张图片 sizeType: ['compressed'], // 压缩图片 sourceType: ['album', 'camera'], // 可以从相册或相机中选择图片 success: function (res) { var tempFilePaths = res.tempFilePaths; // 在此处调用wx.request函数向后端发送请求,获取人脸识别结果 } }) ``` 在上述代码中,我们使用`wx.chooseImage`函数从相册或相机中选择图片,并将选择的图片路径保存在`tempFilePaths`中。 4. 在前端将选择的图片转换成Base64格式,并将Base64编码后的图片数据发送到后端进行人脸识别。代码示例: ```javascript wx.getFileSystemManager().readFile({ filePath: tempFilePaths[0], encoding: 'base64', success: function(res) { // 调用wx.request函数向后端发送请求,获取人脸识别结果 wx.request({ url: 'https://your_server.com/face_detect', method: 'POST', data: { image: res.data }, success: function(response) { console.log(response.data); } }) } }) ``` 在上述代码中,我们使用`wx.getFileSystemManager().readFile`函数将选择的图片转换成Base64格式,并将Base64编码后的图片数据发送到后端进行人脸识别。需要将`https://your_server.com/face_detect`替换为自己的后端接口地址。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值