• 华为云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 安装依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>com.huaweicloud.sdk</groupId>
    4. <artifactId>huaweicloud-sdk-core</artifactId>
    5. <version>3.0.7-beta</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>com.huaweicloud.sdk</groupId>
    9. <artifactId>huaweicloud-sdk-image</artifactId>
    10. <version>3.0.7-beta</version>
    11. </dependency>
    12. </dependencies>

    代码示例

    该名人识别Demo示例对应URI:POST /v1.0/image/celebrity-recognition。将AK/SK等信息替换后,即可运行体验Demo。

    在 com.huawei.codelabs.image.ImageTagging.java文件中配置用户AK/SK。示例代码如下:

    // 名人识别服务的的基本信息,生成对应的一个客户端连接对象

    1. BasicCredentials credential = new BasicCredentials()
    2. .withAk(ak) // your ak
    3. .withSk(sk) // your sk
    4. .withProjectId(projectId); // projectId

    说明:

    ak 华为云账号 Access Key 。

    sk 华为云账号 Secret Access Key 。具体请参考访问密钥

    projectId 云服务所在项目 ID 。具体请参考API凭证

    初始化客户端

    1. ImageClient client = ImageClient.newBuilder()
    2. .withCredential(credential)
    3. .withHttpConfig(config)
    4. .withEndpoint(endpoint)
    5. .build();

    说明:

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

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

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

    // url形式

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

    // base64形式

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

    说明:

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

    构建发送请求

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

    运行结果

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

    4 图像标签识别示例图

    环境配置

    需要具备jdk环境

    SDK 获取和安装

    通过 Maven 安装依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>com.huaweicloud.sdk</groupId>
    4. <artifactId>huaweicloud-sdk-core</artifactId>
    5. <version>3.0.7-beta</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>com.huaweicloud.sdk</groupId>
    9. <artifactId>huaweicloud-sdk-image</artifactId>
    10. <version>3.0.7-beta</version>
    11. </dependency>
    12. </dependencies>

    代码示例

    图像标签Demo示例对应URI:POST /v1.0/image/tagging。将AK/SK信息替换后,即可运行体验Demo

    在 ImageTagging.java文件中配置用户AK/SK。示例代码如下:

    // 图片标签服务的的基本信息,生成对应的一个客户端连接对象

    1. BasicCredentials credential = new BasicCredentials()
    2. .withAk(ak) // your ak
    3. .withSk(sk) // your sk
    4. .withProjectId(projectId); // projectId

    说明:

    ak 华为云账号 Access Key 。

    sk 华为云账号 Secret Access Key 。具体请参考访问密钥

    projectId 云服务所在项目 ID 。具体请参考API凭证

    初始化客户端

    1. ImageClient client = ImageClient.newBuilder()
    2. .withCredential(credential)
    3. .withHttpConfig(config)
    4. .withEndpoint(endpoint)
    5. .build();

    说明:

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

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

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

     // url形式

    1. ImageTaggingReq image = new ImageTaggingReq();
    2. image.setUrl(url);

     // base64形式

    1. byte[] fileData = FileUtils.readFileToByteArray(new File("./resource/image-tagging.jpg"));
    2. String fileBase64Str = Base64.encodeBase64String(fileData);
    3. ImageTaggingReq imageOfBase64 = new ImageTaggingReq();
    4. imageOfBase64.setImage(fileBase64Str.getBytes());

    说明:

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

    构建发送请求

    1. RunImageTaggingRequest req = new RunImageTaggingRequest();
    2. req.setBody(image);
    3. client.runImageTagging(req);

    运行结果

    1. [main] INFO HuaweiCloud-SDK-Access - "POST https://image.cn-north-4.myhuaweicloud.com/v1.0/image/tagging" 200 3285 09e7bf33492c01f7a5ef1f2bb05a168d
    2. class ImageTaggingBody {
    3. tags: [class ImageTaggingItemBody {
    4. confidence: 95.9
    5. type: object
    6. tag: 树
    7. i18nTag: class ImageTaggingI18nTag {
    8. zh: 树
    9. en: Tree
    10. }
    11. }, class ImageTaggingItemBody {
    12. confidence: 91.97
    13. type: object
    14. tag: 植物
    15. i18nTag: class ImageTaggingI18nTag {
    16. zh: 植物
    17. en: Plant
    18. }
    19. }, class ImageTaggingItemBody {
    20. confidence: 91.53
    21. type: object
    22. tag: 夕阳
    23. i18nTag: class ImageTaggingI18nTag {
    24. zh: 夕阳
    25. en: Setting sun
    26. }
    27. }]
    28. }

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

    身份证识别API:

    示例代码

    1. from HWOcrClientAKSK import HWOcrClientAKSK
    2. from HWOcrClientToken import HWOcrClientToken
    3. import json
    4. AK = "{your ak string}" # AK from authentication.
    5. SK = "{your sk string}" # SK from authentication.
    6. region = "cn-north-4" # http region information.
    7. def aksk_request(req_uri,img_path):
    8. ##AK/SK认证方式
    9. option = {}
    10. # option["side"]="front"
    11. try:
    12. ocr_client = HWOcrClientAKSK(AK, SK, region) # Initialize the ocr_client.
    13. response = ocr_client.request_ocr_service_base64(req_uri, img_path, option) # Call the OCR API to recognize image.
    14. print("Status code:" + str(response.status_code) + "\ncontent:" + response.text)
    15. except ValueError as e:
    16. print(e)
    17. if response.status_code==200:
    18. return json.loads(response.text)
    19. else:
    20. return None
    21. def get_info(trainImg,cardImg):
    22. req_uri = "/v1.0/ocr/train-ticket"
    23. train_data=aksk_request(req_uri,trainImg)
    24. if train_data==None:
    25. print('获取车票信息失败!请重新验证。')
    26. return False
    27. req_uri = "/v1.0/ocr/id-card"
    28. card_data=aksk_request(req_uri,cardImg)
    29. if card_data==None:
    30. print('获取身份证信息失败!请重新验证。')
    31. return False
    32. if len(card_data['result']['number'])!=18:
    33. #这里仅处理18位的身份证号
    34. print('您的身份证号非18位,校验信息失败,请联系工作人员!')
    35. return False
    36. number=train_data['result']['id_number']
    37. # number = number[:6] + '*' * 8 + number[-4:]
    38. number = number[:10] + '*' * 4 + number[-4:]
    39. if(train_data['result']['name']==card_data['result']['name'] and train_data['result']['id_number']==number):
    40. print('身份证和火车票信息一致,您可以来开火车了!')
    41. return True
    42. else:
    43. print('身份证和火车票信息不一致,请重新验证!')
    44. return False
    45. if __name__ == '__main__':
    46. trainImg = "./data/1.jpg"
    47. cardImg = "./data/id-card-demo0.jpg"
    48. get_info(trainImg,cardImg)

    运行示例

    根据实际情况替换如下变量 {AK}、{SK}、{region}、{trainImg} 、{cardImg}

    执行 OCRDemo.py文件

    运行结果

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

    6 体验插件的魅力

    华为云devkit已上线:体验链接:Toolkit-华为云

  • 相关阅读:
    ffmpeg之去除视频水印
    基于51单片机数字电压表仿真设计_数码管显示
    修改linux中tomcat的端口
    如何设计一个微博系统?- 4招教你搞定系统设计
    openlayers 绘图功能,编辑多边形,长度面积测量,tip提示(八)
    AI实战 | 手把手带你打造校园生活助手
    Exch:POP3 和 IMAP4 操作指南
    Git学习笔记 - Git基本操作和GitHub
    AOP是什么?如何使用AOP?
    SpringCloud微服务从入门到入土笔记(1/2)
  • 原文地址:https://blog.csdn.net/hwxiaozhi/article/details/132799707