Java
本文介绍了如何使用阿里云IVPD服务的Java SDK,具体包括SDK的获取和安装方法以及SDK代码示例。
获取地址
您需要引入两个SDK,包括aliyun-java-sdk-core
(阿里云核心SDK)和aliyun-java-sdk-ivpd
(智能视觉生产SDK)。每个SDK都提供了Maven Repository、Central Repository、GitHub的获取方式,您可以选择合适的方式获取SDK。
- aliyun-java-sdk-core:从以下方式中单击选择一种方式。
- aliyun-java-sdk-ivpd: 从以下方式中单击选择一种方式。
安装说明
方法1:使用Maven(推荐)
如果您使用Maven管理Java项目,可以通过在pom.xml文件中添加Maven依赖:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-ivpd</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.4.9</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
说明: version的值以SDK获取地址中的最新版本为准。
方法2:在集成开发环境(IDE)中导入jar文件
- Eclipse安装
- 将下载的aliyun-java-sdk-xxx.jar文件复制到您的项目文件夹中。
- 在Eclipse中打开您的项目,右键单击该项目,单击Properties。
- 在弹出的对话框中,单击Java Build Path > Libraries > Add JARs添加下载的JAR文件。
- 单击Apply and Close。
- IntelliJ 安装
- 将下载的aliyun-java-sdk-xxx.jar文件复制到您的项目文件夹中。
- 在IntelliJ中打开您的项目,在菜单栏中单击File > Project > Structure。
- 单击Apply,然后单击OK。
示例
package com.aliyun.aic.demo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.aliyuncs.*;
import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.ivpd.model.v20190625.*;
import com.aliyuncs.profile.DefaultProfile;
import org.apache.http.util.Asserts;
import java.util.*;
/**
* doc: https://help.aliyun.com/document_detail/133958.html?spm=a2c4g.11174283.6.559.2db8519cdKrB6k
*/
public class IVPDSdkDemo {
static IAcsClient client = null;
static String regionId = "cn-beijing";
public static void main(String[] args) throws Exception {
DefaultProfile profile = DefaultProfile.getProfile(regionId, Config.acccessKeyId, Config.accesssKeySecret);
profile.getHttpClientConfig().setMaxRequests(100);
profile.getHttpClientConfig().setMaxRequestsPerHost(50);
client = new DefaultAcsClient(profile);
testSegmentImage();//通用分割
testSegmentBody();//人像分割
testDetectImageElements();//元素检测
testRecolorImage();//色彩迁移/拓色
testRecognizeImageColor();//色板识别
testRecognizeImageStyle();//风格识别
testExtendImageStyle();//风格迁移
testChangeImageSize();//尺寸变换
testMakeSuperResolutionImage();//超分辨率
}
public static void testChangeImageSize() throws Exception {
System.out.println("-------- 尺寸变换 --------------");
ChangeImageSizeRequest req = new ChangeImageSizeRequest();
req.setUrl(formatDemoUrl("ChangeImageSize/change-image-size-src.png"));
req.setWidth(800);
req.setHeight(600);
ChangeImageSizeResponse resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp.getCode(), resp.getMessage(), resp.getData());
}
public static void testExtendImageStyle() throws Exception {
ExtendImageStyleRequest req = new ExtendImageStyleRequest();
System.out.println("-------- 图像风格迁移 --------------");
String majorUrl = formatDemoUrl("ExtendImageStyle/majorUrl.jpeg");
String styleUrl = formatDemoUrl("ExtendImageStyle/styleUrl.jpeg");
req.setMajorUrl(majorUrl);
req.setStyleUrl(styleUrl);
ExtendImageStyleResponse resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp.getCode(), resp.getMessage(), resp.getData());
}
public static void testMakeSuperResolutionImage() throws Exception {
MakeSuperResolutionImageRequest req = new MakeSuperResolutionImageRequest();
System.out.print("-------- 清晰化/超分辨 ----");
req.setUrl(formatDemoUrl("MakeSuperResolution/sup-dog.png"));
MakeSuperResolutionImageResponse resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp.getCode(), resp.getMessage(), resp.getData());
}
public static void testRecognizeImageColor() throws Exception {
RecognizeImageColorRequest req = new RecognizeImageColorRequest();
System.out.print("-------- 色板识别 ----");
req.setUrl(formatDemoUrl("RecognizeImageColor/RecognizeImageColor.png"));
RecognizeImageColorResponse resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp.getCode(), resp.getMessage(), resp.getData());
}
public static void testRecognizeImageStyle() throws Exception {
RecognizeImageStyleRequest req = new RecognizeImageStyleRequest();
System.out.print("-------- 风格识别 ----");
req.setUrl(formatDemoUrl("RecognizeImageStyle/technology.png"));
RecognizeImageStyleResponse resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp.getCode(), resp.getMessage(), resp.getData());
}
public static void testRecolorImage() throws Exception {
RecolorImageRequest req = new RecolorImageRequest();
System.out.print("-------- 拓色 ----");
req.setUrl(formatDemoUrl("RecolorImage/recolor-1-src.png"));
req.setColorCount(3);
//(必填)拓色模式,默认AUTO,取值范围[AUTO:自动拓色, TEMPLATE:色板拓色, REF_PIC:参考图拓色]
req.setMode("AUTO");
RecolorImageResponse resp = null;
//AUTO
System.out.println("自动拓色");
resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp.getCode(), resp.getMessage(), resp.getData());
//RefUrl TODO
System.out.println("参考图拓色");
req.setMode("REF_PIC");
req.setRefUrl(formatDemoUrl("RecolorImage/recolor-refurl-src.png"));
resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp.getCode(), resp.getMessage(), resp.getData());
//ColorTemplate TODO
System.out.println("色板拓色");
req.setMode("TEMPLATE");
req.setUrl(formatDemoUrl("RecolorImage/recolor-2-src.png"));
req.setUrl(formatDemoUrl("RecolorImage/recolor-refurl-src.png"));
List<RecolorImageRequest.ColorTemplate> colorTemplateList = new ArrayList<>();
RecolorImageRequest.ColorTemplate c1 = new RecolorImageRequest.ColorTemplate();
RecolorImageRequest.ColorTemplate c2 = new RecolorImageRequest.ColorTemplate();
RecolorImageRequest.ColorTemplate c3 = new RecolorImageRequest.ColorTemplate();
c1.setColor("056A6B");
c2.setColor("FF0000");//16711680
c3.setColor("00FF00");//65280
colorTemplateList.add(c1);
colorTemplateList.add(c2);
colorTemplateList.add(c3);
req.setColorTemplates(colorTemplateList);
resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp.getCode(), resp.getMessage(), resp.getData());
}
public static void testDetectImageElements() throws Exception {
DetectImageElementsRequest req = new DetectImageElementsRequest();
System.out.print("-------- 元素检测 -----");
req.setUrl(formatDemoUrl("DetectImageElements/detect-elements-src.png"));
DetectImageElementsResponse resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp.getCode(), resp.getMessage(), resp.getData());
}
public static SegmentImageResponse testSegmentImage() throws Exception {
SegmentImageRequest req = new SegmentImageRequest();
System.out.print("-------- 通用分割 -----");
req.setUrl(formatDemoUrl("SegmentImage/segment-image-src.jpg"));
SegmentImageResponse resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp.getCode(), resp.getMessage(), resp.getData());
return resp;
}
public static SegmentBodyResponse testSegmentBody() throws Exception {
SegmentBodyRequest req = new SegmentBodyRequest();
System.out.print("-------- 人像分割 -----");
req.setImageUrl(formatDemoUrl("SegmentBody/mayun.jpeg"));
SegmentBodyResponse resp = getAcsResponse(req);
printResponse(req.getSysActionName(), resp.getRequestId(), resp.getCode(), resp.getMessage(), resp.getData());
return resp;
}
public static void printResponse(String action, String requestId, String code, String message, Object data) {
System.out.print(" " + action + " ======================================\n");
System.out.println("requestId: " + requestId);
System.out.println("code: " + code);
System.out.println(" msg: " + message);
System.out.println("body.class: " + data == null ? null : data.getClass());
System.out.println("body: " + JSON.toJSONString(data, SerializerFeature.PrettyFormat));
Asserts.check("0".equals(code), "assert code == 0 req:");
Asserts.check(null != data, "assert data != null");
System.out.println("\n");
}
private static <R extends RpcAcsRequest<T>, T extends AcsResponse> T getAcsResponse(R req) throws Exception {
req.setSysProtocol(ProtocolType.HTTPS);
return client.getAcsResponse(req);
}
private static String formatDemoUrl(String file) {
return String.format("http://ivpd-%s.oss-%s.aliyuncs.com/ivpd-demo/images/%s", regionId, regionId, file);
}
}