华为云AI:轻松实现图像识别调用

news2024/11/19 17:37:31

文章目录

  • 前言
  • 一、环境配置
    • 关键步骤
  • 二、图像识别实例
    • 媒资图像标签
    • 名人识别
  • 总结


前言

基于华为云AI服务和java使用SDK实现图像识别,主要以媒资图像标签和名人识别为例。


一、环境配置

  • Maven(没有直接下载华为的SDK包,而是使用Maven安装依赖)
  • JDK19(官方的SDK包要求JDK版本必须高于JDK8版本,大家根据自己只要满足版本要求即可)
  • 开发工具:IDEA 2023.3(其他版本也可)
    • 能创建Maven项目即可
  • 开通图像识别服务(目前是免费体验):这里我开通的是图像标签/媒资图像标签和名人识别服务。
  • 设置访问密钥
  • 服务区域:我开通的服务区域是华北-北京四

关键步骤

Maven项目的创建和Java环境变量的配置我就不再赘诉,这是大家学习java早已熟练掌握的,这里只讲诉易错的。

开通图像识别服务
华为云首页就有云产品体验区(找不到就在搜索栏检索),勾选AI:
在这里插入图片描述
点击“立即体验”后,找到服务列表,开通你想要的服务(点击开通):
在这里插入图片描述
设置访问密钥
在控制台找到“我的凭证”:
在这里插入图片描述
找到“访问密钥”,如果没有就新增,新增后一定要下载密钥的CSV文件,他会有提示让你下载,防止你忘记:
在这里插入图片描述
下载完csv文件后用记事本打开即可看到AK和SK:
在这里插入图片描述
Maven引入依赖配置
版本可以自己切换

		<dependency>
			<groupId>com.huaweicloud.sdk</groupId>
			<artifactId>huaweicloud-sdk-image</artifactId>
			<version>3.1.8</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.70</version>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpcore</artifactId>
			<version>4.4.16</version>
		</dependency>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.16.0</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.13.0</version>
		</dependency>

二、图像识别实例

媒资图像标签

功能介绍:对用户传入的图像可以返回图像中的物体名称、所属类别及置信度信息。

使用图片是网上的,仅作学习使用:
在这里插入图片描述

代码如下:

/**
 * @Version: 1.0.0
 * @Author: Dragon_王
 * @ClassName: RunImageMediaTaggingSolution
 * @Description: 媒资图像标签
 * @Date: 2024/1/8 11:51
 */

/**
 * 此demo仅供测试使用,强烈建议使用SDK
 * 使用前需配置依赖jar包。jar包可通过下载SDK获取
 */

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.image.v2.region.ImageRegion;
import com.huaweicloud.sdk.image.v2.*;
import com.huaweicloud.sdk.image.v2.model.*;

public class RunImageMediaTaggingSolution {

    public static void main(String[] args) {
        //此处需要输入您的AK/SK信息
        String ak = "你的AK";
        String sk = "你的SK";

        ICredential auth = new BasicCredentials()
                .withAk(ak)
                .withSk(sk);

        ImageClient client = ImageClient.newBuilder()
                .withCredential(auth)
                .withRegion(ImageRegion.valueOf("cn-north-4"))  //此处替换为您开通服务的区域
                .build();
        RunImageMediaTaggingRequest request = new RunImageMediaTaggingRequest();
        ImageMediaTaggingReq body = new ImageMediaTaggingReq();
        body.withThreshold(10f);
        body.withLanguage("zh");
        body.withUrl("https://tse2-mm.cn.bing.net/th/id/OIP-C.SIuEnb1-arhtDNqfdICVqAHaE7?rs=1&pid=ImgDetMain");  //此处替换为公网可以访问的图片地址
        request.withBody(body);
        try {
            RunImageMediaTaggingResponse response = client.runImageMediaTagging(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}

运行结果:
在这里插入图片描述

class RunImageMediaTaggingResponse {
    result: class ImageMediaTaggingResponseResult {
        tags: [class ImageMediaTaggingItemBody {
            confidence: 83.63
            type: 动物
            tag: 金毛犬
            i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                zh: 金毛犬
                en: Golden retriever
            }
            i18nType: class ImageMediaTaggingItemBodyI18nType {
                zh: 动物
                en: Animal
            }
            instances: []
        }, class ImageMediaTaggingItemBody {
            confidence: 81.78
            type: 动物
            tag: 金毛
            i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                zh: 金毛
                en: Golden hair
            }
            i18nType: class ImageMediaTaggingItemBodyI18nType {
                zh: 动物
                en: Animal
            }
            instances: []
        }, class ImageMediaTaggingItemBody {
            confidence: 77.00
            type: 动物
            tag: 金毛寻猎犬
            i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                zh: 金毛寻猎犬
                en: Golden Retriever
            }
            i18nType: class ImageMediaTaggingItemBodyI18nType {
                zh: 动物
                en: Animal
            }
            instances: []
        }, class ImageMediaTaggingItemBody {
            confidence: 62.60
            type: 动物
            tag: 贵妇犬
            i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                zh: 贵妇犬
                en: Poodle
            }
            i18nType: class ImageMediaTaggingItemBodyI18nType {
                zh: 动物
                en: Animal
            }
            instances: []
        }, class ImageMediaTaggingItemBody {
            confidence: 59.02
            type: 生活
            tag: 狗链
            i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                zh: 狗链
                en: Dog chain
            }
            i18nType: class ImageMediaTaggingItemBodyI18nType {
                zh: 生活
                en: Life
            }
            instances: []
        }, class ImageMediaTaggingItemBody {
            confidence: 53.84
            type: 动物
            tag: 宠物狗
            i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                zh: 宠物狗
                en: Pet dog
            }
            i18nType: class ImageMediaTaggingItemBodyI18nType {
                zh: 动物
                en: Animal
            }
            instances: []
        }, class ImageMediaTaggingItemBody {
            confidence: 48.01
            type: 动物
            tag: 狗狗
            i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                zh: 狗狗
                en: Dog
            }
            i18nType: class ImageMediaTaggingItemBodyI18nType {
                zh: 动物
                en: Animal
            }
            instances: []
        }, class ImageMediaTaggingItemBody {
            confidence: 44.02
            type: 动物
            tag: 犬
            i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                zh: 犬
                en: Dog
            }
            i18nType: class ImageMediaTaggingItemBodyI18nType {
                zh: 动物
                en: Animal
            }
            instances: []
        }, class ImageMediaTaggingItemBody {
            confidence: 42.11
            type: 动物
            tag: 纯种犬
            i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                zh: 纯种犬
                en: Purebred dog
            }
            i18nType: class ImageMediaTaggingItemBodyI18nType {
                zh: 动物
                en: Animal
            }
            instances: []
        }, class ImageMediaTaggingItemBody {
            confidence: 38.65
            type: 动物
            tag: 中华田园犬
            i18nTag: class ImageMediaTaggingItemBodyI18nTag {
                zh: 中华田园犬
                en: Chinese pastoral dog
            }
            i18nType: class ImageMediaTaggingItemBodyI18nType {
                zh: 动物
                en: Animal
            }
            instances: []
        }]
    }
}

Process finished with exit code 0

名人识别

功能介绍:分析并识别图片中包含的敏感人物、明星及网红人物,返回人物信息及人脸坐标。

使用照片是网上的照片,仅作学习使用:
在这里插入图片描述

代码如下:

/**
 * @Version: 1.0.0
 * @Author: Dragon_王
 * @ClassName: RunCelebrityRecognitionSolution
 * @Description: 媒资标签
 * @Date: 2024/1/9 16:23
 */

import com.alibaba.fastjson.JSON;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.image.v2.ImageClient;
import com.huaweicloud.sdk.image.v2.model.RunCelebrityRecognitionRequest;
import com.huaweicloud.sdk.image.v2.region.ImageRegion;
import com.huaweicloud.sdk.image.v2.model.CelebrityRecognitionReq;
import com.huaweicloud.sdk.image.v2.model.RunCelebrityRecognitionResponse;


public class RunCelebrityRecognitionSolution {

    public static void main(String[] args) {
        // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全
        // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK
        String ak = "你的AK";
        String sk = "你的SK";

        ICredential auth = new BasicCredentials()
                .withAk(ak)
                .withSk(sk);

        ImageClient client = ImageClient.newBuilder()
                .withCredential(auth)
                .withRegion(ImageRegion.valueOf("cn-north-4"))  //此处替换为您开通服务的区域
                .build();
        RunCelebrityRecognitionRequest request = new RunCelebrityRecognitionRequest();
        CelebrityRecognitionReq body = new CelebrityRecognitionReq();
        body.withThreshold(0f);
        body.withUrl("https://tse1-mm.cn.bing.net/th/id/OIP-C.tM6jifW1xaCDP7Kia9QiYwHaKD?rs=1&pid=ImgDetMain");   //此处替换为公网可以访问的图片地址
        request.withBody(body);
        try {
            RunCelebrityRecognitionResponse response = client.runCelebrityRecognition(request);
            System.out.println(response.getHttpStatusCode());
            System.out.println(JSON.toJSONString(response));
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}

运行结果:

200
{"httpStatusCode":200,"result":[{"confidence":0.9985551,"faceDetail":{"w":132,"h":186,"x":197,"y":79},"label":"成龙"}]}

Process finished with exit code 0

总结

以上就是华为云的AI图像识别服务调用,这里提供官方文档

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

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

相关文章

CPT203-Software Engineering 笔记

Week 1 -- Introduction failure reason professional software development*** maintain, security, efficiency, acceptability two kinds***: generic, customized software deterioration 软件退化 reduce changes/ side effects after changes software engineering …

Python豆瓣爬虫详解

有没有过周末为看什么电影焦虑&#xff0c;今天手把手教学爬取豆瓣电影评分&#xff01; 0&#xff0c;当我们打开一个网站的时候这个时候网站给到我们一个cookies&#xff0c;这个cokkies可能是多个参数或一个参数&#xff0c;然后我们再浏览其他的页面的时候网站会校验cooki…

理解接雨水算法

一、IDEA注释显示图片 在做题时&#xff0c;需要对照这图片&#xff0c;才能更好的梳理思路。 首先&#xff0c;注释里添加<img/>标签 之后&#xff0c;将鼠标光标放置在需要以阅读模式预览注释的地方&#xff0c;然后按快捷键CtrlAltQ即可 二、接雨水算法 先看接雨水…

文件批量重命名:在原文件名上插入随机字母,高效命名文件的方法

在处理大量文件时&#xff0c;高效的文件命名系统可以大大提高工作效率。下面来看云炫文件管理器如何用简单的方法&#xff0c;轻松的在原文件名上批量插入随机字母&#xff0c;实现高效的文件命名。 原文件名插入随机字母前后的对比效果。 在原文件名上插入随机字母的操作&am…

机器学习 —— 自用整理期末复习笔记

一、绪论 机器学习术语 假设空间 p5 监督学习&#xff08;supervised learning&#xff09;的任务是学习一个模型&#xff0c;使模型能够对任意给定的输入&#xff0c;对其相应的输出做出一个好的预测。模型属于由输入空间到输出空间的映射的集合&#xff0c;这个集合就是假设空…

Nginx实战 | 高性能HTTP和反向代理神器Nginx前世今生,以及它的“繁花之境”

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

基于ssm的图书管理系统设计与实现论文

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-3(1) 刚体的位形 Configuration of Rigid Body

本文仅供学习使用&#xff0c;总结很多本现有讲述运动学或动力学书籍后的总结&#xff0c;从矢量的角度进行分析&#xff0c;方法比较传统&#xff0c;但更易理解&#xff0c;并且现有的看似抽象方法&#xff0c;两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

计算机网络-各层协议

大家在搞嵌入式开发的时候基本都了解过七层网络协议、五层网络协议、四层网络协议&#xff0c;那么今天让我们更加的深入了解一下&#xff1a; 历史发展介绍 OSI七层模型由ISO国际标准化组织提出的通信标准。TCP/IP四层模型是OSI七层模型的简化版&#xff0c;OSI在它被官方完…

索罗斯:真正好的投资都是无聊的

赚钱&#xff0c;要依靠正常价值的商品出现折扣以及押注意外事件。 我之所以富有&#xff0c;是因为我知道什么时候犯错了。我的“幸存”基本上都是因为我认识到并改正了错误。我们应该明白&#xff0c;人类都会犯错&#xff0c;犯错并不丢人&#xff0c;丢人的是不能改正错误。…

深度学习 Day26——J5DenseNet+SE-Net实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 文章目录 前言1 我的环境2 pytorch实现DenseNet算法2.1 前期准备2.1.1 引入库2.1.2 设…

常见排序算法及其稳定性分析

前言&#xff1a; 排序算法可以说是每一个程序员在学习数据结构和算法时必须要掌握的知识点&#xff0c;同样也是面试过程中可能会遇到的问题&#xff0c;在早些年甚至还会考冒泡排序。由此可见呢&#xff0c;掌握一些常见的排序算法是一个程序员的基本素养。虽然现在的语言标…

高标准农田建设的实施要点

高标准农田应用大数据、物联网、移动互联等现代信息技术&#xff0c;对基地种植区域的气象环境、土壤墒情、病虫害、农事活动等进行实时监测&#xff0c;实现农田种植智能化、经营网络化、管理高效化、服务便捷化&#xff0c;全面提高农田种植现代化水平。在高标准农田的建设方…

git秘钥过期 ERROR: Your SSH key has expired

文章目录 1、错误提示Your SSH key has expired2、登录Github确认3、重新设置秘钥 1、错误提示Your SSH key has expired 使用git命令时遇到Github 的 SSH Key秘钥过期&#xff0c;提示错误ERROR: Your SSH key has expired 2、登录Github确认 首先登录Github查看&#xff…

CSAPP阅读笔记-信息的表示和处理

信息的表示和处理 包括整数、浮点数的存储格式、计算中可能存在的问题等 信息存储 大多数计算机使用8位的块&#xff0c;或者字节(byte)&#xff0c;作为最小的可寻址的内存单位&#xff0c;而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组&#xff0c…

Fedora Linux 中安装 nginx

Fedora 35 中安装 nginx 的方法非常简单。 运行下面的命令&#xff1a; sudo dnf install nginx 在提示你需要确认的地方&#xff0c;输入 y 后回车即可。 开机自动启动 如果你希望在你的操作系统重启的时候自动启动 nginx&#xff0c;请输入下面的命令&#xff1a; syst…

2.2.3机器学习—— 判定梯度下降是否收敛 + α学习率的选择

2.2.3 判定梯度下降是否收敛 α学习率的选择 2.1、 判定梯度下降是否收敛 有两种方法&#xff0c;如下图&#xff1a; 方法一&#xff1a; 如图&#xff0c;随着迭代次数的增加&#xff0c;J(W,b)损失函数不断下降当 iterations 300 之后&#xff0c;下降的就不太明显了 / …

shader技巧

数学函数&#xff1a; abs()&#xff1a;绝对值函数。 acos()&#xff1a;反余弦函数。 asin()&#xff1a;反正弦函数。 atan()&#xff1a;反正切函数。 ceil()&#xff1a;向上取整函数。 cos()&#xff1a;余弦函数。 cross()&#xff1a;向量叉积函数。 distance()&#x…

MyBatis:自定义 typeHandler 处理枚举类型

MyBatis 枚举类型typeHandler 枚举类型 枚举类型&#xff0c;在 Java 中属于基本数据类型&#xff0c;而不是构造数据类型&#xff0c;用于声明一组命名的常数。枚举可以根据 Integer 、Long 、Short 或 Byte 中的任意一种数据类型来创建一种新型变量。这种变量可以设置为已经…

【Python程序开发系列】一文总结API的基本概念、功能分类、认证方式、使用方法和开发流程

这是Python程序开发系列原创文章&#xff0c;我的第195篇原创文章。 一、什么是API&#xff1f; API是软件开发中非常重要的概念&#xff0c;它简化了不同组件之间的交互和集成&#xff0c;提供了对其他软件或服务功能的访问和调用方式。 API是应用程序编程接口&#xff08;Ap…