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

文章目录

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


前言

基于华为云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>

二、图像识别实例

媒资图像标签

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

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

代码如下:

java">/**
 * @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());
        }
    }
}

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

java">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

名人识别

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

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

代码如下:

java">/**
 * @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());
        }
    }
}

运行结果:

java">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.niftyadmin.cn/n/5314020.html

相关文章

Spring 基于注解的AOP见解4

5.基于注解的AOP配置 5.1创建工程 5.1.1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&…

解析游戏开发中的ECS设计模式:实体、组件、系统的完美协同

ECS&#xff08;Entity-Component-System&#xff09;是一种设计模式&#xff0c;通常用于构建和管理具有大量实体和复杂交互的系统&#xff0c;尤其在游戏开发中得到广泛应用。这个模式的核心思想是将系统中的组件、实体和系统进行分离&#xff0c;以提高代码的可维护性、可扩…

#{}和${}的区别?

#{}是占位符&#xff0c;预编译处理&#xff1b;${}是拼接符&#xff0c;字符串替换&#xff0c;没有预编译处理。Mybatis在处理#{}时&#xff0c;#{}传入参数是以字符串传入&#xff0c;会将SQL中的#{}替换为?号&#xff0c;调用PreparedStatement的set方法来赋值。Mybatis在…

.NET学习教程二——.net基础定义+VS常用设置

一&#xff1a;注释 C#编写代码注意事项&#xff1a; 1、写代码切忌括号错误! 2、代码中所有的标点都是英文半角的标点 3、c#代码中每行代码以分号结束. 作用&#xff1a; 1、注销 2、解释 C#的3种注释符 1、单行注释// 2、多行注释/* 注释内容*/ 3、文档注释 ///多用…

家政服务系统有哪些优势及特点

&#x1f308;家政系统小程序&#xff0c;有哪些功能优势&#xff01; 1、平台依托&#xff1a;&#x1f30d;小程序极速开发。 2、人员保障&#xff1a;顾客轻松注册&#xff0c;家政服务人员也有独立账号。 3、地域无忧&#xff1a;后台自定义开放城市范围。&#x1f31f; 4、…

Flink编程实践

(一)开发WordCount 程序. 在 Linux 系统中实现WordCount 程序,并打包成 JAR 文件,提交到 Flink 中运行。 创建目录用来存放代码: mkdir -p ~/flinkapp/src/main/java使用gedit编辑器在“./flinkapp/src/main/java”目录下建立三个代码文件,其中WordCountData.java用于…

MYSQL的SWITCH语句和循环语句

1. 请解释MySQL中的CASE语句和IF语句的区别。 MySQL中的CASE语句和IF语句都可以用于条件判断&#xff0c;但它们的使用方式和语法有所不同。 CASE语句&#xff1a;CASE语句是一种更灵活的条件判断结构&#xff0c;它可以处理多个条件和结果。CASE语句的基本语法如下&#xff…

海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7,yolov8(7)

上一篇用MindStudio转换完om模型,就可以在板卡里进行推理验证了。 SDK里有相关推理的demo,只要om模型转换没有遇到问题,是可以做推理验证。 首先SDK里推理验证方式有两种,一个是用H264实时视频流的方式,还有一种是通过图片的方式。 H264方式需要准备好FFMPEG,通过本地…