如何使用网络摄像头捕获图像并通过八位字节流将其发送到微软的面部API



>我正在尝试使用设备的网络摄像头捕获图像,并通过微软的面部API发送该图像以得出该人的情感等。 我正在录制和捕获照片并将其转换为 jpeg 格式,然后转换为 API 要求的二进制格式。但是当我发送请求时,它给了我一个错误。

captureButton.addEventListener('click', () => {   
context.drawImage(player, 0, 0, canvas.width, canvas.height);
x=context.getImageData(0,0,canvas.width,canvas.height);
x=convertCanvasToImage(canvas);
y=tobinary(x);
});



function processImage(stream) {
var subscriptionKey = "{MY_SUBSCRIPTION_KEY}";
var uriBase =
"https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect";
var params = {
"returnFaceId": "true",
"returnFaceLandmarks": "false",
"returnFaceAttributes":
"age,gender,headPose,smile,emotion," +
"occlusion,accessories,blur,exposure,noise"
}
// Perform the REST API call.
$.ajax({
url: uriBase + "?" + $.param(params),
// Request headers.
beforeSend: function(xhrObj){
xhrObj.setRequestHeader("Content-Type","application/octet-stream");
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key", subscriptionKey);
},
type: "POST",
// Request body.
body:[y],

}(

我希望它可以工作,但 API 给出错误:400 图像太小 我明天必须提交这个 请帮忙

如果这是错误消息,则表示您的图像无效。根据官方文件:

支持 JPEG、PNG、GIF(第一帧(和 BMP 格式。这 允许的图像文件大小为 1KB 到 6MB。最小可检测值 在图像中,人脸大小为 36x36 像素,不大于 1920x1080 像素。

尺寸高于 1920x1080 像素的图片需要 按比例放大最小脸型。最多可以有 100 张面 返回图像。人脸按人脸矩形大小排名,从 从大到小。为了在查询人脸 - 识别时获得最佳结果, 人脸 - 验证,人脸 - 查找相似("returnFaceId"为真(, 请使用以下面部:正面、清晰且最小尺寸 200x200 像素(眼睛之间 100 像素(。

来源: https://westus.dev.cognitive.microsoft.com/docs/services/563879b61984550e40cbbe8d/operations/563879b61984550f30395236

我建议您在尝试使用网络摄像头之前传递有效的现有图像。修复此问题后,请使用网络摄像头捕获的图像进行测试。

相关内容

  • 没有找到相关文章

最新更新