本帖直接以代码为主
import cn.hutool.http.HttpUtil;
import cn.xsshome.taip.util.FileUtil;
import com.alibaba.fastjson.JSON;
import com.baidu.aip.util.Base64Util;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author 小帅丶
* @className EasyDLSampleSecond
* @Description 调用EasyDL示例代码
* @Date 2020/2/27-12:41
**/
public class EasyDLSampleSecond {
//图像分割EasyDL自训练接口地址
public static String REFUSE_URL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/segmentation/bean_color_classify";
public static void main(String[] args) throws Exception{
//接口必要参数AccessToken
String accessToken = "";
//要检测的图片
String filePath = "F://testimg//body//1.jpg";
//图片转base64字符串处理
String base64Img = Base64Util.encode(FileUtil.readFileByBytes(filePath));
//参数对象组装
RequestBean bean = new RequestBean();
bean.setImage(base64Img);
//参数对象转JSON字符串
String param = JSON.toJSONString(bean);
//发送请求并获取结果
String result = HttpUtil.post(REFUSE_URL+"?access_token="+accessToken, param);
//打印检测结果
System.out.println(result);
//给图片加框
getReact(filePath, JSON.parseObject(result, ResponseBean.class));
}
/**
* @Author 小帅丶
* @Description 接口请求所需对象
* @Date 2020/2/27 12:50
**/
@Data
public static class RequestBean{
private String image;
private String threshold;
}
/**
* @Author 小帅丶
* @Description 接口返回的对象
* @Date 2020/2/27 12:50
**/
@Data
public static class ResponseBean{
private long log_id;
private List results;
@NoArgsConstructor
@Data
public static class ResultsBean {
private LocationBean location;
private String name;
private double score;
private String mask;
@NoArgsConstructor
@Data
public static class LocationBean {
private int height;
private int left;
private int top;
private int width;
}
}
}
/**
* @Author 小帅丶
* @Description 给图片增加框
* @Date 2020/2/27 13:11
* @param filePath 图片路径
* @param bean 包含坐标的对象 x-left y-top width-width height-height
* @return void
**/
public static void getReact(String filePath,ResponseBean bean) throws Exception{
BufferedImage image = ImageIO.read(new File(filePath));
Graphics g = image.getGraphics();
List results = bean.getResults();
Font font = new Font("微软雅黑", Font.BOLD, 16);
//统计个数文字风格设置
Font fontCount = new Font("微软雅黑", Font.BOLD, 72);
//统计个数使用
List list = new ArrayList<>();
for (int i = 0; i < results.size(); i++) {
//保存名称
list.add(i, results.get(i).getName());
g.setColor(Color.BLUE);
g.setFont(font);
g.drawString(results.get(i).getName(), results.get(i).getLocation().getLeft(), results.get(i).getLocation().getTop());
g.drawRect(results.get(i).getLocation().getLeft(), results.get(i).getLocation().getTop(), results.get(i).getLocation().getWidth(), results.get(i).getLocation().getHeight());
}
//分组统计个数
Map collect = list.stream().collect(Collectors.groupingBy(String::trim, Collectors.counting()));
g.setColor(Color.RED);
g.setFont(fontCount);
//画在图片上
g.drawString(collect.toString().replace("{", "").replace("}", ""),100,100);
FileOutputStream out = new FileOutputStream("F://testimg//body//11.jpg");//输出图片的地
ImageIO.write(image, "jpeg", out);
}
}
原图
检测处理后的图片
个人主页:https://ai.baidu.com/forum/user/center/2312713
个人邮箱:youngxiaoshuai#163.com (#替换为@)