easyimage java_【EasyDL图像分割】Java示例包含框选统计

本帖直接以代码为主

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);

}

}

原图

5017f30468295446bd022cf76d62ebee.png

检测处理后的图片

bb8d0eab845ed69ecb6b5a0448ee70d5.png

个人主页:https://ai.baidu.com/forum/user/center/2312713

个人邮箱:youngxiaoshuai#163.com (#替换为@)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值