前言
基于华为云ai服务和java使用sdk实现图像识别,主要以媒资图像标签和名人识别为例。
一、环境配置
- maven(没有直接下载华为的sdk包,而是使用maven安装依赖)
- jdk19(官方的sdk包要求jdk版本必须高于jdk8版本,大家根据自己只要满足版本要求即可)
- 开发工具:idea 2023.3(其他版本也可)
- 能创建maven项目即可
- 开通图像识别服务(目前是免费体验):这里我开通的是图像标签/媒资图像标签和名人识别服务。
- 设置访问密钥
- 服务区域:我开通的服务区域是华北-北京四
关键步骤
开通图像识别服务
华为云首页就有云产品体验区(找不到就在搜索栏检索),勾选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图像识别服务调用,这里提供官方文档
发表评论