您的位置:首页 > 编程语言 > Java开发

利用Java实现人像分割(去除背景,保留人像 )

2020-02-02 01:51 1806 查看

1.首先,使用JavaSDK,快速实现人像的分割。

我用的是使用maven依赖,(前提是项目中有用的maven):

[code]<dependency>
            <groupId>com.baidu.aip</groupId>
            <artifactId>java-sdk</artifactId>
            <version>4.11.3</version>

</dependency>

也可以直接使用jar包(复制网上的,未亲测):

1.在官方的网站上下载JavaSDK;

2.把jar包拉到工程中;

3.在设置中“工程-->Properties-->Java Build Path --> Add JARs”;

4.添加SDK工具包

aip-java-sdk-version.jar
和第三方依赖工具包
json-20160810.jar
 
slf4j-api-1.7.25.jar
 
slf4j-simple-1.7.25.jar(可选)

其中,

version
为版本号,添加完成后,用户就可以在工程中使用BodyAnalysis Java SDK。

 

2.然后新建AipBodyAnalysis

在这之前,需要你在百度云上申请自己的App ID,API Key,Secret Key。

1)登录百度智能云账号,找到管理控制台,创建应用

2)点击创建应用,

3)完成之后,会得到你想要的AppId、API Key、Secret Key。

好了,可以继续了。

 

创建一个类:

[code]import java.util.HashMap;

import org.json.JSONObject;

import com.baidu.aip.bodyanalysis.AipBodyAnalysis;

public class Sample {
//设置APPID/AK/SK
public static final String APP_ID = "App ID";//自己的App ID
public static final String API_KEY = "Api Key";//自己的 Api Key
public static final String SECRET_KEY = "Secret Key";//自己的Secret Key

public static String sample(AipBodyAnalysis client) {
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>();
options.put("type", "foreground");

// 参数为本地路径
String image = "temp.jpg";//图片的路径
JSONObject res = client.bodySeg(image, options);
return res.get("foreground").toString();

}

}

 在用到的地方:

[code]AipBodyAnalysis c = new AipBodyAnalysis(Sample.APP_ID, Sample.API_KEY, Sample.SECRET_KEY);
String sam = Sample.sample(c);
System.out.println(sam);

打印出来的sam的值,即为二进制的图片值 ,

我的代码中是:return res.get("foreground").toString();

所以返回的只有foreground的值。

如果想要展示出图片,需要加上base64的前缀:“data:image/jpeg;base64,”

 

请求参数解释:

人像分割 返回数据参数:

效果图:

 

例子中用的图片不太好,因为里面有不止一个人,单人照片效果会更好。

共同学习,共同进步。

--来自IT 小小学生一枚

 

  • 点赞
  • 收藏
  • 分享
  • 文章举报
IT小小学生 发布了5 篇原创文章 · 获赞 0 · 访问量 384 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: