关于api:华为云API图像识别Image的趣味性AI识别迈克尔杰克逊

91次阅读

共计 7482 个字符,预计需要花费 19 分钟才能阅读完成。

云服务、API、SDK,调试,查看,我都行

浏览短文您能够学习到:人工智能 AI 图像识别的图像识别、名人辨认


1 IntelliJ IDEA 之 API 插件介绍

API 插件反对 VS Code IDE、IntelliJ IDEA 等平台、以及华为云自研 CodeArts IDE,基于华为云服务提供的能力,帮忙开发者更高效、便捷的搭建利用。API 插件关联华为云服务下的 API Explorer、DevStar、CodeLabs、SDK 核心和 CLI 核心产品,致力于为开发者提供更稳固、疾速、平安的编程体验。

在本插件中,咱们提供了但不局限于如下的性能:

对接华为云 API 开放平台,反对用户检索 API、查看 API 文档、调试 API、以及提供 SDK 示例代码供用户学习如何应用 API。

提供华为云 SDK 代码片段补全性能,SDK 依赖包主动引入,减速用户集成华为云 API。

对接华为云开发体验馆 Codelabs,提供 500+ 云服务代码示例,向导式教程帮忙用户疾速学习。

阐明:

在 IntelliJ IDEA 等系列平台和 VS Code IDE,华为云 API 插件的名称是 Huawei Cloud API。而在 CodeArts IDE,API 插件是 IDE 原生内置的,名称是华为云 API 开发套件。

API 插件在 IntelliJ IDEA 等系列平台和 VS Code IDE 的应用依赖底座插件,请提前装置底座插件。

2 API 插件装置 –IntelliJ IDEA

2.1 IntelliJ IDEA 等平台

装置筹备:下载并装置 JDK1.8 或更高版本。下载并装置 IntelliJ IDEA 2020.2 或更高版本。

须知:IntellIj 平台同时撑持包含 Goland、Pycharm 等在内的 IDE,若在其它相干 IDE 上开发,请下载配置好对应语言的编译器或者解释器。这里以 IDEA 为例介绍 IntelliJ 平台插件的装置流程,其余 IntelliJ 系列的 IDE 请参考 IDEA。https://developer.huaweicloud.com/develop/toolkit.html

开始装置:

您能够在间接在 IDE 插件市场或者间接在 JetBrains 插件市场下载离线包装置。

IDE 装置

  1. 在 IntelliJ IDEA 顶部菜单栏中抉择 File > Settings,在 Settings 对话框的左侧导航栏中单击 Plugins。
  2. Plugins 区域单击 Marketplace, 在搜寻栏中输出 Huawei Cloud API。
  3. Search Results 区域会呈现 Huawei Cloud API,单击 Install,实现后重启 IDE。

离线包装置:

  1. 进入插件市场搜寻 Huawei Cloud API,进入插件详情页,在 Versions 页签下抉择想要版本的 API 插件,点击 Download 下载离线的插件压缩包保留到本地。。
  2. 在 IntelliJ IDEA 顶部菜单栏中抉择 File > Settings,在 Settings 对话框的左侧导航栏中单击 Plugins。
  3. 在 Plugins 区域单击,再单击 Install Plugin from Disk…。
  4. 在 Choose Plugin File 对话框中抉择离线安装包(不必解压),并依照 IntelliJ IDEA 装置页面的提醒,实现后续装置步骤。

阐明:若以后您想要装置插件的 IntelliJ IDE 曾经在桌面关上,则进入插件市场搜寻 Huawei Cloud API,进入插件详情页,在右上角会辨认到本地曾经关上的 IDE,点击相应按钮,在弹出的 IDE 窗口中点击 ok,则 IDE 后盾会开始装置相应版本的 API 插件。

装置验证:在 IntelliJ 系列平台上装置插件胜利后在左侧的导航栏中能够看到 Huawei Cloud Toolkit 图标,点击后面板会呈现 Huawei Cloud API 的字样,则阐明装置胜利。

2.2 API 列表

左侧展现 API 列表,能够查问所有 API,目前云服务 206,APIs9213

https://developer.huaweicloud.com/develop/toolkit.html

账号筹备:

要应用华为云 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 接口的形式应用图像识别服务。

3 名人辨认示例

环境配置:

须要具备 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/celebrity-recognition。将 AK/SK 等信息替换后,即可运行体验 Demo。

在 com.huawei.codelabs.image.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 凭证

初始化客户端

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

阐明:

endpoint 华为云各服务利用区域和各服务的终端节点,详情请查看地区和终端节点。

举例: 如下图, 如果要应用北京四的图像识别服务,endpoint 应填入 https://image.cn-north-4.myhuaweicloud.com

抉择一张明星或者网络红人的人像图片(url 或者本地图片)

// url 模式

CelebrityRecognitionReq image = new CelebrityRecognitionReq();
image.setUrl(url);

// base64 模式

byte[] fileData = FileUtils.readFileToByteArray(new File("./resource/celebrity-recognition.jpg"));
String fileBase64Str = Base64.encodeBase64String(fileData);
CelebrityRecognitionReq image = new CelebrityRecognitionReq();
image.setImage(fileBase64Str);

阐明:

url 和 base64 抉择其中一种进行赋值

构建发送申请

RunCelebrityRecognitionRequest req = new RunCelebrityRecognitionRequest();
req.setBody(image);
client.runCelebrityRecognition(req);

运行后果

[main] INFO HuaweiCloud-SDK-Access - "POST https://image.cn-north-4.myhuaweicloud.com/v1.0/image/celebrity-recognition" 200 125 e4b023aeea93393afe9dd9d78c09630c
[class CelebrityRecognitionResultBody {
    confidence: 0.9897535374803481
    faceDetail: {w=365, h=514, x=260, y=198}
    label: 迈克尔·杰克逊
}]

4 图像标签辨认示例图

环境配置

须要具备 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

在 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 凭证

初始化客户端

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

阐明:

endpoint 华为云各服务利用区域和各服务的终端节点,详情请查看地区和终端节点。

举例: 如下图, 如果要应用北京四的图像识别服务,endpoint 应填入 https://image.cn-north-4.myhuaweicloud.com

构建拜访图片标签服务须要的参数(抉择本地图片或者图片的 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 抉择其中一种进行调用, 不可同时抉择

构建发送申请

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
         }
     }]
 }

5 火车票身份证一致性验证 / 身份证一致性验证

身份证辨认 API:

示例代码

 from HWOcrClientAKSK import HWOcrClientAKSK
    from HWOcrClientToken import HWOcrClientToken
    import json
    
    AK = "{your ak string}"  # AK from authentication.
    SK = "{your sk string}"  # SK from authentication.
    region = "cn-north-4"  # http region information.
    
    def aksk_request(req_uri,img_path):
        ##AK/SK 认证形式
        option = {}
        # option["side"]="front"
        try:
            ocr_client = HWOcrClientAKSK(AK, SK, region)  # Initialize the ocr_client.
            response = ocr_client.request_ocr_service_base64(req_uri, img_path, option)  # Call the OCR API to recognize image.
            print("Status code:" + str(response.status_code) + "\ncontent:" + response.text)
        except ValueError as e:
            print(e)
        if response.status_code==200:
            return json.loads(response.text)
        else:
            return None
    
    def get_info(trainImg,cardImg):
        req_uri = "/v1.0/ocr/train-ticket"
        train_data=aksk_request(req_uri,trainImg)
        if train_data==None:
            print('获取车票信息失败!请从新验证。')
            return False
        req_uri = "/v1.0/ocr/id-card"
        card_data=aksk_request(req_uri,cardImg)
        if card_data==None:
            print('获取身份证信息失败!请从新验证。')
            return False
        if len(card_data['result']['number'])!=18:
            #这里仅解决 18 位的身份证号
            print('您的身份证号非 18 位,校验信息失败,请分割工作人员!')
            return False
        number=train_data['result']['id_number']
        # number = number[:6] + '*' * 8 + number[-4:]
        number = number[:10] + '*' * 4 + number[-4:]
        if(train_data['result']['name']==card_data['result']['name'] and train_data['result']['id_number']==number):
            print('身份证和火车票信息统一,您能够来开火车了!')
            return True
        else:
            print('身份证和火车票信息不统一,请从新验证!')
            return False
     
    if __name__ == '__main__':    
     
        trainImg = "./data/1.jpg"
        cardImg = "./data/id-card-demo0.jpg"
     
        get_info(trainImg,cardImg)

运行示例

依据理论状况替换如下变量 {AK}、{SK}、{region}、{trainImg}、{cardImg}

执行 OCRDemo.py 文件

运行后果

执行完 文件后,在 console 查看日志打印了“身份证和火车票信息统一,您能够来开火车了!”。

6 体验插件的魅力

华为云 devkit 已上线
体验链接:https://developer.huaweicloud.com/develop/toolkit.html

正文完
 0