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

news2024/11/17 11:29:57

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1002005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习算法

深度学习算法 1. 各种网络框架及其联系1.1 两阶段与一阶段区别1.1.1 detectron算法框架套路&#xff1a;1.1.2 multi-stage1.1.3 two-stage 算法1.1.4 one-stage 算法 2. 常用算法2.1 SS(选择性搜索算法&#xff0c;Selective Search) 3. 神经元模型4. 神经网络分类4.1 前馈神经…

Linux内核分析与应用5-中断

本系列是对 陈莉君 老师 Linux 内核分析与应用[1] 的学习与记录。讲的非常之好&#xff0c;推荐观看 留此记录&#xff0c;蜻蜓点水,可作抛砖引玉 中断机制概述 中断是CPU对系统发生的某个事件作出的一种反应, 当中断发生时,CPU暂停正在执行的程序,保留现场后,自动转去执行相应…

一本快速入门Java的书

关于这本书 很高兴&#xff0c;我又一本书籍《Java编程动手学》上市了。记得早在2017年&#xff0c;在我跟人邮出版社的傅道坤编辑合作完《Tomcat内核设计剖析》这本书后&#xff0c;傅编就问我考不考虑写一本面向Java初学者的图书&#xff0c;当时我谢绝了傅编的邀请。一来是我…

总结986

时间记录&#xff1a; 7:10起床 8:00~下午2:00课程设计&#xff0c;偷学了3小时 2:17~3:55午觉 4:10~5:30计网 5:35~6:41数据结构 7:00~7:22继续数据结构课后习题重做 7:23~8:07考研政治&#xff0c;做题20道纠错 8:15~8:39每日长难句 8:39~10:21 14年tex2纠错标记 1…

Unity下如何实现RTMP或RTSP播放端录像?

好多开发者问我们&#xff0c;Unity环境下&#xff0c;除了RTSP或RTMP的播放&#xff0c;如果有录像诉求&#xff0c;怎么实现&#xff1f;实际上录像相对播放来说&#xff0c;更简单一些&#xff0c;因为不涉及到绘制&#xff0c;只要拉流下来数据&#xff0c;直接写mp4文件就…

pytorch代码实现之SAConv卷积

SAConv卷积 SAConv卷积模块是一种精度更高、速度更快的“即插即用”卷积&#xff0c;目前很多方法被提出用于降低模型冗余、加速模型推理速度&#xff0c;然而这些方法往往关注于消除不重要的滤波器或构建高效计算单元&#xff0c;反而忽略了特征内部的模式冗余。 原文地址&am…

BUUCTF Reverse/[羊城杯 2020]login(python程序)

查看信息,python文件 动调了一下&#xff0c;该程序创建了一个线程来读入数据&#xff0c;而这个线程的代码应该是放在内存中直接执行的&#xff0c;本地看不到代码&#xff0c;很蛋疼 查了下可以用PyInstaller Extractor工具来解包&#xff0c;可以参考这个Python解包及反编译…

华为云云服务器云耀L实例评测 | 在华为云耀L实例上搭建电商店铺管理系统:一次场景体验

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

sqli第一关

1.在下使用火狐访问sqlilabs靶场并使用burpsuite代理火狐。左为sqlilabs第一关&#xff0c;右为burpsuite。 2.输入?id1 and 11 与?id1 and 12试试 可以看出没有变化哈&#xff0c;明显我们输入的语句被过滤了。在?id1后面尝试各种字符&#xff0c;发现单引号 包…

Linux内核分析与应用4-内存管理

本系列是对 陈莉君 老师 Linux 内核分析与应用[1] 的学习与记录。讲的非常之好&#xff0c;推荐观看 留此记录&#xff0c;蜻蜓点水,可作抛砖引玉 4.1 Linux内存管理机制 lscpu[2] 命令, 类似是优化后的 cat /proc/cpuinfo 实现虚拟内存的几种机制: 当 程序一旦跑起来,那就变成…

IDEA在创建包时如何把包分开实现自动分层

IDEA在创建包时如何把包分开实现自动分层 文章目录 IDEA在创建包时如何把包分开实现自动分层一、为什么要把包分开二、建包时如何把包自动分开三、如何编写配置文件路径&#xff1f; 一、为什么要把包分开 一开始的时候&#xff0c;我也一直以为包连在一起和分开没什么区别&am…

二叉搜索树/二叉排序树/二叉查找树

文章目录 1.概念2.操作3.实现3.1框架3.2BSTree.h3.3test.cpp 1.概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;…

python 学习笔记(5)——SMTP 使用QQ邮箱发送邮件

目录 发送邮件 1、准备工作&#xff1a; 2、发送纯文本信息内容&#xff1a; 3、发送 HTML 格式的内容&#xff1a; 4、发送带附件的邮件&#xff1a; 5、群发&#xff08;一个邮件&#xff0c;发给多个人&#xff09;&#xff1a; 发送邮件 以下都 以 QQ邮箱 为发送方举…

敏捷开发方法管理项目,适应变化,引领未来

​敏捷开发方法是一种灵活且高效的项目管理方法&#xff0c;旨在应对不断变化的需求和快速发展的项目环境。使用敏捷开发方法可以帮助团队更好地应对不确定性&#xff0c;提高项目的质量和效率。以下是使用敏捷开发方法管理项目的具体步骤&#xff1a; 明确项目目标和范围 在…

算法通过村第六关-树白银笔记|层次遍历

文章目录 前言1. 层次遍历介绍2. 基本的层次遍历与变换2.1 二叉树的层次遍历2.2 层次遍历-自底向上2.3 二叉树的锯齿形层次遍历2.4 N叉树的层次遍历 3. 几个处理每层元素的题目3.1 在每棵树行中找出最大值3.2 在每棵树行中找出平均值3.3 二叉树的右视图3.4 最底层最左边 总结 前…

C高级day4(shell脚本)

一、Xmind整理&#xff1a; 二、上课笔记整理&#xff1a; 1.创建一个文件&#xff0c;给组用户可读权限&#xff0c;所属用户可写权限&#xff0c;其他用户可执行权限&#xff0c;使用if判断文件有哪些权限 #!/bin/bash touch 1 chmod 241 1 if [ -r 1 ] thenecho "文件…

为 DevOps 战士准备的 Linux 命令

点击链接了解详情 这篇文章将帮助理解DevOps工程师所需的大部分重要且经常使用的Linux命令。 要执行这些命令&#xff0c;你可以使用任何Linux机器、虚拟机或在线Linux终端来迅速开始使用这些命令。 系统信息命令&#xff1a; hostname - 显示系统主机的名称。 hostid - 显示…

openGauss学习笔记-66 openGauss 数据库管理-创建和管理schema

文章目录 openGauss学习笔记-66 openGauss 数据库管理-创建和管理schema66.1 背景信息66.2 注意事项66.3 操作步骤66.3.1 创建管理用户及权限schema66.3.2 使用schema66.3.3 schema的搜索路径66.3.4 schema的权限控制66.3.5 删除schema openGauss学习笔记-66 openGauss 数据库管…

Codeforces Round 827 (Div. 4) D 1e5+双重for循环技巧

Codeforces Round 827 (Div. 4) D 做题链接&#xff1a;Codeforces Round 827 (Div. 4) 给定一个由 n个正整数 a1,a2,…,an&#xff08;1≤ai≤1000&#xff09;组成的数组。求ij的最大值&#xff0c;使得ai和aj共质&#xff0c;否则−1&#xff0c;如果不存在这样的i&#…

github 创建自己的分支 并下载代码

github创建自己的分支 并下载代码 目录概述需求&#xff1a; 设计思路实现思路分析1.进入到master分支&#xff0c;git checkout master;2.master-slave的个人远程仓库3.爬虫调度器4.建立本地分支与个人远程分支之间的联系5.master 拓展实现 参考资料和推荐阅读 Survive by day…