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

举报
华为云classroom 发表于 2023/12/18 16:27:52 2023/12/18
【摘要】 云服务、API、SDK,调试,查看,我都行 阅读短文您可以学习到:人工智能AI图像识别的图像识别、名人识别1      Classroom和Toolkit的关系1.1      Classroom的简介classroom是基于华为云的云上软件教学服务,支持初级开发者和高校师生实现备课、上课、作业、考试、实验、实训等全教学流程的线上教学,提供多类习题自动判题、企业级DevOps实训、免费在线习...

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

阅读短文您可以学习到:人工智能AI图像识别的图像识别、名人识别

1      Classroom和Toolkit的关系

1.1      Classroom的简介

classroom是基于华为云的云上软件教学服务,支持初级开发者和高校师生实现备课、上课、作业、考试、实验、实训等全教学流程的线上教学,提供多类习题自动判题、企业级DevOps实训、免费在线习题库等众多高级特性辅助进行数字化教学转型。

1.2      Toolkit插件之华为云API实战课程


2      IntelliJ IDEA 之API插件介绍

API插件支持 VS Code IDEIntelliJ IDEA等平台、以及华为云自研 CodeArts IDE,基于华为云服务提供的能力,帮助开发者更高效、便捷的搭建应用。API插件关联华为云服务下的 API ExplorerDevStarCodeLabsSDK 中心和 CLI 中心产品,致力于为开发者提供更稳定、快速、安全的编程体验。

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

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

提供华为云SDK代码片段补全功能,SDK依赖包自动引入,加速用户集成华为云API

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

说明:

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

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

3      API插件安装--IntelliJ IDEA

3.1    IntelliJ IDEA等平台

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

须知:IntellIj平台同时支撑包括GolandPycharm等在内的IDE,若在其它相关IDE上开发,请下载配置好对应语言的编译器或者解释器。这里以IDEA为例介绍IntelliJ平台插件的安装流程,其他IntelliJ系列的IDE请参考IDEAhttps://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的字样,则说明安装成功。

3.2      API列表


左侧展示API列表,可以查询所有API,目前云服务206APIs9213

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


账号准备:

要使用华为云 Java SDK,您需要拥有华为云账号以及该账号对应的 Access KeyAK)和 Secret Access KeySK)。请在华为云控制台“我的凭证-访问密钥”页面上创建和查看您的 AKSK。更多信息请查看访问密钥。

华为云 Java SDK 支持 Java JDK 1.8 及其以上版本。

开通服务:

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

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

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

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

4.用户可以在图像识别管理控制台“服务列表”或“服务管理”页面申请开通服务。

以在“服务管理”页面开通“图像识别-图像标签”服务为例,在“商用服务”栏中选择“图像标签”,单击“开通服务”开通。

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

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

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示例对应URIPOST /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);

说明:

urlbase64选择其中一种进行赋值

构建发送请求

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: 迈克尔·杰克逊

}]

5      图像标签识别示例图


环境配置

需要具备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示例对应URIPOST /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());

说明::

urlbase64选择其中一种进行调用,不可同时选择

构建发送请求

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

         }

     }]

 }


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

身份证识别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 查看日志打印了“身份证和火车票信息一致,您可以来开火车了!”。


7      体验插件课程

https://classroom.devcloud.huaweicloud.com/MOOCCourseStudy/join/ef4ebc3dbaa246ff995f75022cac8cb9

识别下方二维码立即体验

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。