文档地址:
1.在文档中找到 [API 3.0 Explorer]点击进入
2.填写个人密钥,以及根据需要填写选填参数
-
这里因为需要获得人脸属性信息,所以参数NeedFaceAttributes填1
3.右边选择Node.js后复制代码
4.在小程序项目中创建云函数
粘贴代码,并修改
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const tencentcloud = require("tencentcloud-sdk-nodejs");//修改路径,然后上传
function syncFaceDetect(imgBase64) {
const IaiClient = tencentcloud.iai.v20180301.Client;
const models = tencentcloud.iai.v20180301.Models;
const Credential = tencentcloud.common.Credential;
const ClientProfile = tencentcloud.common.ClientProfile;
const HttpProfile = tencentcloud.common.HttpProfile;
let cred = new Credential("AKID26wX0FwzsfasdfP", "Xpredfdfdfdfdfdfdfdfd");
let httpProfile = new HttpProfile();
httpProfile.endpoint = "iai.tencentcloudapi.com";
let clientProfile = new ClientProfile();
clientProfile.httpProfile = httpProfile;
let client = new IaiClient(cred, "ap-guangzhou", clientProfile);
let req = new models.DetectFaceRequest();
let params = '{"Image":"' + imgBase64 + '","NeedFaceAttributes":1,"NeedQualityDetection":1}' //上传的图片类型和地址
req.from_json_string(params);
// promise封装结果
return new Promise((resolve, reject) => {
client.DetectFace(req, function (errMsg, response) {
if (errMsg) {
reject(errMsg);
return;
}
resolve();
});
})
}
// 云函数入口函数
exports.main = async (event, context) => {
// event事件对象,返回调用云函数后的所有数据,解构赋值给imgBase64
let { imgBase64 } = event;
let res = await syncFaceDetect(imgBase64);
return res;
}
5.右键上传云函数,并在云函数目录下手动安装依赖
- 安装后在命令行中执行 node.js index,若提示安装依赖,根据提示安装即可,若返回接口的参数则成功
npm install tencentcloud-sdk-nodejs --save
6.在需要使用人脸检测的页面调用人脸检测云函数
- 封装将上传的图片转为base64格式
- 封装云函数
//转换base64
base64(imgPath) {
const fs = wx.getFileSystemManager();
return new Promise((resolve, reject) => {
fs.readFile({
filePath: imgPath,
encoding: 'base64',
success(res) {
resolve(res.data)
},
fail(err) {
reject(res);
}
})
})
},
//调用人脸检测
faceDetectAPI(imgBase64) {
return new Promise((resolve, reject) => {
wx.cloud.callFunction({
name: "faceDetect",
data: {
//传参给云函数
imgBase64
},
success: (res) => {
resolve(res);
},
fail(err) {
reject(err)
}
})
})
},
detect(){
this.base64(this.data.previewImg).then(res => {
return this.faceDetectAPI(res)
}).then(res => {
console.log(res)
}
}