华为云API图像识别Image的趣味性—AI识别迈克尔·杰克逊

云服务、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

Toolkit-华为云

账号准备:

要使用华为云 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已上线:体验链接:Toolkit-华为云

相关推荐
AngelPP9 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年9 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼9 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS9 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区10 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈11 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang11 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx
shengjk112 小时前
NanoClaw 深度剖析:一个"AI 原生"架构的个人助手是如何运转的?
人工智能
西门老铁14 小时前
🦞OpenClaw 让 MacMini 脱销了,而我拿出了6年陈的安卓机
人工智能