请教一下视觉智能平台,这个人脸属性识别的接口,如何使用本地图片直接上传? https://help.aliyun.com/document_detail/151968.html?spm=a2cw1.28085164.help.dexternal.158b143fGfbmyg
阿里云视觉智能平台人脸属性识别接口支持上传本地图片进行识别。您可以通过以下步骤来使用本地图片直接上传:
将本地图片读取为二进制数据流。
将二进制数据流进行Base64编码,得到Base64编码后的字符串。
将Base64编码后的字符串作为请求参数中的image
字段值,发起POST请求到人脸属性识别接口。
以下是使用Python代码将本地图片上传到人脸属性识别接口的示例:
import base64
# 读取本地图片
with open('image.jpg', 'rb') as f:
image_data = f.read()
# 将图片数据进行Base64编码
image_base64 = base64.b64encode(image_data).decode('utf-8')
# 发起POST请求到人脸属性识别接口
import requests
url = 'https://dtplus-cn-shanghai.data.aliyuncs.com/face/attribute'
appcode = 'your_appcode'
headers = {
'Authorization': 'APPCODE ' + appcode,
'Content-Type': 'application/json; charset=UTF-8'
}
data = {
'type': 0,
'content': image_base64
}
response = requests.post(url, headers=headers, json=data)
# 处理响应结果
result = response.json()
print(result)
人脸属性识别接口要求上传的图片格式为JPG、JPEG、BMP、PNG、GIF中的一种,且文件大小不超过4MB。如果您上传的图片格式不符合要求,或者文件大小超过限制,接口会返回错误信息。
你好,视觉智能开放平台如果是本地图片的话,需要使用xxxAdvanceRequest将文件以stream形式通过ImageURLObject参数传入进行后续调用,比如实例的java代码
package com.aliyun.sample;
// 1、这里只是以ocr下的RecognizeBankCard能力为例,其他能力请引入相应类目的包和相关类。包名可参考本文档上方的SDK包名称,能力名可参考对应API文档中的Action参数。例如您想使用通用分割,其文档为https://help.aliyun.com/document_detail/151960.html,可以知道该能力属于分割抠图类目,能力名称为SegmentCommonImage,那么您需要将代码中ocr20191230改为imageseg20191230,将RecognizeBankCard改为SegmentCommonImage。
import com.aliyun.ocr20191230.models.RecognizeBankCardResponse;
import com.aliyun.tea.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class Sample {
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
// 这里只是以ocr为例,其他能力请使用相应类目的包下面的Client类
public static com.aliyun.ocr20191230.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 您的 AccessKey ID
.setAccessKeyId(accessKeyId)
// 您的 AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 2、访问的域名。注意:这个地方需要求改为相应类目的域名,参考:https://help.aliyun.com/document_detail/143103.html
config.endpoint = "ocr.cn-shanghai.aliyuncs.com";
// 3、这里只是以ocr为例,其他能力请使用相应类目的包下面的Client类
return new com.aliyun.ocr20191230.Client(config);
}
public static void main(String[] args) throws Exception {
// 4、"YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET" 的生成请参考https://help.aliyun.com/document_detail/175144.html
// 如果您是用的子账号AccessKey,还需要为子账号授予权限AliyunVIAPIFullAccess,请参考https://help.aliyun.com/document_detail/145025.html
// 这里只是以ocr为例,其他能力请使用相应类目的包下面的Client类
com.aliyun.ocr20191230.Client client = Sample.createClient("YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET");
// 场景一,使用本地文件
// InputStream inputStream = new FileInputStream(new File("/tmp/bankCard.png"));
// 场景二,使用任意可访问的url
URL url = new URL("https://viapi-test-bj.oss-cn-beijing.aliyuncs.com/viapi-3.0domepic/ocr/RecognizeBankCard/yhk1.jpg");
InputStream inputStream = url.openConnection().getInputStream();
// 5、这里只是以ocr下的RecognizeBankCard为例,其他能力请使用相应类目的包和类,具体入参设置需要参考具体能力的文档
com.aliyun.ocr20191230.models.RecognizeBankCardAdvanceRequest recognizeBankCardAdvanceRequest = new com.aliyun.ocr20191230.models.RecognizeBankCardAdvanceRequest()
.setImageURLObject(inputStream);
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 6、这里只是以ocr下的RecognizeBankCard为例,其他能力请使用相应类目的包和类,注意,recognizeBankCardAdvance方法名也需要改成对应能力的方法名。方法名是根据能力名称按照一定规范形成的,如能力名称为SegmentCommonImage,对应方法名应该为segmentCommonImageAdvance。
RecognizeBankCardResponse resp = client.recognizeBankCardAdvance(recognizeBankCardAdvanceRequest, runtime);
// 获取整体结果。部分能力会输出url链接,通过toJSONString转换后可能有编码问题,但是通过单个字段获取是没问题的。
System.out.println(com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(resp)));
// 获取单个字段,这里只是一个例子,具体能力下的字段需要看具体能力的文档
System.out.println(resp.getBody().getData().getCardNumber());
} catch (com.aliyun.tea.TeaException teaException) {
// 获取整体报错信息
System.out.println(com.aliyun.teautil.Common.toJSONString(teaException));
// 获取单个字段
System.out.println(teaException.getCode());
}
}
}
使用阿里云视觉智能平台人脸属性识别 API 进行本地图片上传,可以按照以下步骤进行:
准备本地图片,确保图片格式为 JPG、PNG、BMP、GIF、WebP、TIFF 之一,大小不超过 2 MB。
调用阿里云视觉智能平台人脸属性识别 API,将图片内容转换成 Base64 编码的字符串,并设置 API 请求参数。
以下是示例代码(Python):
import base64
import urllib.request
import urllib.parse
import json
# 将图片文件转换成 Base64 编码的字符串
with open("image.jpg", "rb") as f:
base64_img = base64.b64encode(f.read()).decode('utf-8')
# 构造 API 请求参数,其中需要包含图片的 Base64 编码
data = {
'image': base64_img,
'attribute': 'gender,age,smiling,headpose,facequality'
}
appcode = '你的AppCode' # 替换成您的 AppCode
# 发送 POST 请求到 API 接口
headers = {'Authorization': 'APPCODE ' + appcode, 'Content-Type': 'application/json; charset=UTF-8'}
url = 'https://dtplus-cn-shanghai.data.aliyuncs.com/face/attribute'
req = urllib.request.Request(url, json.dumps(data).encode('utf-8'), headers)
response = urllib.request.urlopen(req)
result = response.read().decode('utf-8')
print(result)
在上面的代码中,你需要替换 'image.jpg' 为你要上传的文件路径;'attribute' 参数指定所需人脸属性识别结果的项目,例如性别、年龄、微笑程度等。在示例代码中,我指定了一组默认属性项目。
另外,还需要替换 '你的AppCode' 为你所购买的 API 服务的 AppCode,该值可以在阿里云后台找到。
解析 API 返回结果,获取人脸属性识别结果。阿里云视觉智能平台人脸属性识别 API 返回结果是一个 JSON 格式的字符串,其中包括了识别结果中的各个属性项、置信度等信息。可以使用相应的解析工具(如 Python 中的 JSON 库)对返回结果进行解析和处理。
这里有示例代码的,文件本地上传 最低SDK版本要求:facebody20191230的SDK版本需大于等于3.0.7。你看下版本,此回答整理自钉群“阿里云视觉智能开放平台咨询1群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。