【图像识别】标签识别示例
引导式阅读
Java
【图像识别】标签识别示例
作者
C***
上架时间
2021-06-28 12:10:41

版本说明

本示例基于华为云SDK V3.0版本开发。

图像标签识别示例图

图像标签示例图

前期准备

账号准备

  • 要使用华为云 Java SDK,您需要拥有华为云账号以及该账号对应的 Access Key(AK)和 Secret Access Key(SK)。请在华为云控制台“我的凭证-访问密钥”页面上创建和查看您的 AKSK。更多信息请查看访问密钥
  • 华为云 Java SDK 支持 Java JDK 1.8 及其以上版本。

开通服务

图像识别服务申请开通您可以按照以下步骤进行操作:

1.登录华为云,申请华为云账号,并完成实名认证

2.在华为云页面顶部选择“EI企业智能>AI服务>图像识别 Image”。

3.进入产品页,单击立即使用,输入您注册的用户名密码,进入图像识别管理控制台。

4.用户可以在图像识别管理控制台“服务列表”或“服务管理”页面申请开通服务。 以在“服务管理”页面开通“图像识别-图像标签”服务为例,在“商用服务”栏中选择“图像标签”,单击“开通服务”开通。

>说明:服务只需要开通一次即可,后面使用时无需再申请

5.商用服务申请成功后,在“服务管理”页面,“我的服务”中显示已经申请开通成功的服务,此时,您可以通过调用API接口的方式使用图像识别服务。

环境配置

需要具备jdk环境

SDK 获取和安装

  • 通过 Maven 安装依赖

    <dependencies> <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-core</artifactId> <version>3.0.7-beta</version> </dependency> <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-image</artifactId> <version>3.0.7-beta</version> </dependency> </dependencies>

代码示例

  • 图像标签Demo示例对应URI:POST /v1.0/image/tagging。将AK/SK信息替换后,即可运行体验Demo
  1. 在 ImageTagging.java文件中配置用户AK/SK。示例代码如下:

    // 图片标签服务的的基本信息,生成对应的一个客户端连接对象 BasicCredentials credential = new BasicCredentials() .withAk(ak) // your ak .withSk(sk) // your sk .withProjectId(projectId); // projectId

    说明:

    • ak 华为云账号 Access Key 。
    • sk 华为云账号 Secret Access Key 。具体请参考访问密钥
    • projectId 云服务所在项目 ID 。具体请参考API凭证
  2. 初始化客户端

    ImageClient client = ImageClient.newBuilder() .withCredential(credential) .withHttpConfig(config) .withEndpoint(endpoint) .build();

    说明:

    • endpoint 华为云各服务应用区域和各服务的终端节点,详情请查看地区和终端节点
    • 举例: 如下图,如果要使用北京四的图像识别服务,endpoint应填入 https://image.cn-north-4.myhuaweicloud.com 终端节点举例.png

3.构建访问图片标签服务需要的参数(选择本地图片或者图片的url)

// url形式 ImageTaggingReq image = new ImageTaggingReq(); image.setUrl(url); // base64形式 byte[] fileData = FileUtils.readFileToByteArray(new File("./resource/image-tagging.jpg")); String fileBase64Str = Base64.encodeBase64String(fileData); ImageTaggingReq imageOfBase64 = new ImageTaggingReq(); imageOfBase64.setImage(fileBase64Str.getBytes());

说明::

  • url和base64选择其中一种进行调用,不可同时选择

4.构建发送请求

RunImageTaggingRequest req = new RunImageTaggingRequest();
req.setBody(image);

client.runImageTagging(req);

运行结果

[main] INFO HuaweiCloud-SDK-Access - "POST https://image.cn-north-4.myhuaweicloud.com/v1.0/image/tagging" 200 3285 09e7bf33492c01f7a5ef1f2bb05a168d class ImageTaggingBody { tags: [class ImageTaggingItemBody { confidence: 95.9 type: object tag: 树 i18nTag: class ImageTaggingI18nTag { zh: 树 en: Tree } }, class ImageTaggingItemBody { confidence: 91.97 type: object tag: 植物 i18nTag: class ImageTaggingI18nTag { zh: 植物 en: Plant } }, class ImageTaggingItemBody { confidence: 91.53 type: object tag: 夕阳 i18nTag: class ImageTaggingI18nTag { zh: 夕阳 en: Setting sun } }] }

原图: