车辆分割(邀测)
更新时间:2022-09-14
车辆分割不再提供公有云邀测服务,若您仍需要使用车辆分割,您可以选择私有化部署,提交合作咨询联系我们。
接口描述
传入单帧图像,检测图像中的车辆,以小汽车为主,识别车辆的轮廓范围,与背景进行分离,返回分割后的二值图、灰度图,支持多个车辆、车门打开、后备箱打开、机盖打开、正面、侧面、背面等各种拍摄场景。
请求说明
请求示例
HTTP 方法:POST
请求URL:https://aip.baidubce.com/rest/2.0/image-classify/v1/vehicle_seg
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/x-www-form-urlencoded |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
image | 和url二选一 | string | 0-255彩色图像(base64编码) | 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg/bmp/png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,) |
url | 和image二选一 | string | - | 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少50px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效。 |
type | 否 | string | labelmap,scoremap | 可以通过设置type参数,自主设置返回哪些结果图,避免造成带宽的浪费。 1)可选值说明: labelmap - 二值图像,需二次处理方能查看分割效果 scoremap - 车辆前景灰度图 2)type 参数值可以是可选值的组合,用逗号分隔;如果无此参数默认输出全部3类结果图 |
注:返回的二值图像需要进行二次处理才可查看分割效果,示例代码如下;灰度图不用处理,直接解码保存图片即可。
Python:
{
import cv2
import numpy as np
import base64
labelmap = base64.b64decode(res['labelmap']) # res为通过接口获取的返回json
nparr = np.fromstring(labelmap, np.uint8)
labelimg = cv2.imdecode(nparr, 1)
# width, height为图片原始宽、高
labelimg = cv2.resize(labelimg, (width, height), interpolation=cv2.INTER_NEAREST)
im_new = np.where(labelimg==1, 255, labelimg)
cv2.imwrite('path/to/your/outputfile', im_new)
}
Java:
public static BufferedImage resize(BufferedImage img, int newW, int newH) {
Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = dimg.createGraphics();
g2d.drawImage(tmp, 0, 0, null);
g2d.dispose();
return dimg;
}
public static void convert(String labelmapBase64, int realWidth, int realHeight) {
try {
byte[] bytes = Base64.getDecoder().decode(labelmapBase64);
InputStream is = new ByteArrayInputStream(bytes);
BufferedImage image = ImageIO.read(is);
BufferedImage newImage = resize(image, realWidth, realHeight);
BufferedImage grayImage = new BufferedImage(realWidth, realHeight, BufferedImage.TYPE_BYTE_GRAY);
for(int i= 0 ; i < realWidth ; i++){
for(int j = 0 ; j < realHeight; j++){
int rgb = newImage.getRGB(i, j);
grayImage.setRGB(i, j, rgb * 255); //将像素存入缓冲区
}
}
File newFile = new File("gray.jpg");
ImageIO.write(grayImage, "jpg", newFile);
} catch (IOException e) {
e.printStackTrace();
}
}
返回说明
返回参数
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
labelmap | 否 | string | 分割结果图片,base64编码之后的二值图像,单通道图片,需二次处理方能查看分割效果 |
scoremap | 否 | string | 分割后车辆前景的scoremap,归一到0-255,不用进行二次处理,直接解码保存图片即可,单通道图片。Base64编码后的灰度图文件,图片中每个像素点的灰度值 = 置信度 * 255,置信度为原图对应像素点位于车辆轮廓内的置信度,取值范围[0, 1] |
返回示例
{
"log_id": 716033439,
"labelmap": "xxxx",
"scoremap": "xxxx",
"foreground": "xxxx"
}