开发者社区 > 视觉智能 > 正文

请教一下视觉智能平台,这个人脸属性识别的接口,如何使用本地图片直接上传?

请教一下视觉智能平台,这个人脸属性识别的接口,如何使用本地图片直接上传?f808ca4f3ba14f95dbfe86d412093728.png https://help.aliyun.com/document_detail/151968.html?spm=a2cw1.28085164.help.dexternal.158b143fGfbmyg

展开
收起
真的很搞笑 2023-05-23 21:28:54 184 0
4 条回答
写回答
取消 提交回答
  • 阿里云视觉智能平台人脸属性识别接口支持上传本地图片进行识别。您可以通过以下步骤来使用本地图片直接上传:

    1. 将本地图片读取为二进制数据流。

    2. 将二进制数据流进行Base64编码,得到Base64编码后的字符串。

    3. 将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。如果您上传的图片格式不符合要求,或者文件大小超过限制,接口会返回错误信息。

    2023-05-24 15:49:39
    赞同 展开评论 打赏
  • 从事java行业9年至今,热爱技术,热爱以博文记录日常工作,csdn博主,座右铭是:让技术不再枯燥,让每一位技术人爱上技术

    你好,视觉智能开放平台如果是本地图片的话,需要使用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());
            }
        }
    }
                        
    
    2023-05-24 14:39:15
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    使用阿里云视觉智能平台人脸属性识别 API 进行本地图片上传,可以按照以下步骤进行:

    1. 准备本地图片,确保图片格式为 JPG、PNG、BMP、GIF、WebP、TIFF 之一,大小不超过 2 MB。

    2. 调用阿里云视觉智能平台人脸属性识别 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,该值可以在阿里云后台找到。

    3. 解析 API 返回结果,获取人脸属性识别结果。阿里云视觉智能平台人脸属性识别 API 返回结果是一个 JSON 格式的字符串,其中包括了识别结果中的各个属性项、置信度等信息。可以使用相应的解析工具(如 Python 中的 JSON 库)对返回结果进行解析和处理。

    2023-05-23 22:09:28
    赞同 展开评论 打赏
  • 这里有示例代码的,文件本地上传 最低SDK版本要求:facebody20191230的SDK版本需大于等于3.0.7。你看下版本,此回答整理自钉群“阿里云视觉智能开放平台咨询1群”

    2023-05-23 21:38:21
    赞同 展开评论 打赏

为开发者提供高易用、普惠的视觉API服务,帮助企业快速建立视觉智能技术应用能力的综合性视觉AI能力平台。适用于数字营销、互联网娱乐、安防、手机应用、泛金融身份认证等行业。

相关产品

  • 视觉智能开放平台
  • 热门讨论

    热门文章

    相关电子书

    更多
    阿里云视觉智能开放平台-产品介绍 立即下载
    阿里云视觉智能开放平台产品介绍 立即下载
    利用CNN实现无需联网的图像识别 立即下载