接口说明
通用物体和场景识别
该请求用于通用物体和场景识别,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中的多个物体及场景标签。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用通用物体和场景识别
result = client.advanced_general(image, aip::null);
// 如果有可选参数
std::map<std::string, std::string> options;
options["baike_num"] = "5";
// 带参数调用通用物体和场景识别
result = client.advanced_general(image, options);
通用物体和场景识别 请求参数详情
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
---|---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 | |
baike_num | 否 | std::string | 0 | 返回百科信息的结果数,默认不返回 |
通用物体和场景识别 返回数据参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 唯一的log id,用于问题定位 |
result_num | 是 | unit32 | 返回结果数目,及result数组中的元素个数 |
result | 是 | array(object) | 标签结果数组 |
+keyword | 是 | string | 图片中的物体或场景名称 |
+score | 是 | float | 置信度,0-1 |
+root | 是 | string | 识别结果的上层标签,有部分钱币、动漫、烟酒等tag无上层标签 |
+baike_info | 否 | object | 对应识别结果的百科词条名称 |
++baike_url | 否 | string | 对应识别结果百度百科页面链接 |
++image_url | 否 | string | 对应识别结果百科图片链接 |
++description | 否 | string | 对应识别结果百科内容描述 |
通用物体和场景识别 返回示例
{
"log_id": 327863200205075661,
"result_num": 5,
"result": [{
"score": 0.967622,
"root": "公众人物",
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E6%96%B0%E5%9E%A3%E7%BB%93%E8%A1%A3/8035884",
"image_url": "http://imgsrc.baidu.com/baike/pic/item/91ef76c6a7efce1b27893518a451f3deb58f6546.jpg",
"description": "新垣结衣(Aragaki Yui),1988年6月11日出生于冲绳县那霸市。日本女演员、歌手、模特。毕业于日出高中。2001年,参加《nicola》模特比赛并获得最优秀奖。2005年,因出演现代剧《涩谷15》而作为演员出道。2006年,参演校园剧《我的老大,我的英雄》;同年,她还出版了个人首本写真集《水漾青春》。2007年,她从日出高校毕业后开始专注于演艺发展,并发表个人首张音乐专辑《天空》;同年,新垣结衣还主演了爱情片《恋空》,而她也凭借该片获得了多个电影新人奖项。2010年,主演爱情片《花水木》。2011年,主演都市剧《全开女孩》。2012年,相继参演现代剧《Legal High》、剧情片《剧场版新参者:麒麟之翼》。2013年,主演都市剧《飞翔情报室》。2014年,她主演了剧情片《黎明的沙耶》。2016年,主演爱情喜剧《逃避虽可耻但有用》,并凭借该剧获得了多个电视剧女主角奖项。2017年,主演爱情片《恋爱回旋》,凭借该片获得第60届蓝丝带奖最佳女主角;同年11月,她还凭借医疗剧《Code Blue 3》获得第94届日剧学院赏最佳女配角。"
},
"keyword": "新垣结衣"
},
{
"score": 0.716067,
"root": "人物-人物特写",
"keyword": "头发"
},
{
"score": 0.421281,
"root": "商品-穿戴",
"keyword": "围巾"
},
{
"score": 0.22347,
"root": "商品-五金",
"keyword": "拉链"
},
{
"score": 0.028031,
"root": "商品-穿戴",
"keyword": "脖套"
}]
}
菜品识别
该请求用于菜品识别。即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片的菜品名称、卡路里信息、置信度。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用菜品识别
result = client.dish_detect(image, aip::null);
// 如果有可选参数
std::map<std::string, std::string> options;
options["top_num"] = "3";
options["filter_threshold"] = "0.7";
options["baike_num"] = "5";
// 带参数调用菜品识别
result = client.dish_detect(image, options);
菜品识别 请求参数详情
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
---|---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 | |
top_num | 否 | std::string | 返回预测得分top结果数,默认为5 | |
filter_threshold | 否 | std::string | 默认0.95,可以通过该参数调节识别效果,降低非菜识别率. | |
baike_num | 否 | std::string | 0 | 返回百科信息的结果数,默认不返回 |
菜品识别 返回数据参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 唯一的log id,用于问题定位 |
result_num | 否 | unit32 | 返回结果数目,及result数组中的元素个数 |
result | 否 | array() | 菜品识别结果数组 |
+name | 否 | string | 菜名,示例:鱼香肉丝 |
+calorie | 否 | float | 卡路里,每100g的卡路里含量 |
+probability | 否 | float | 识别结果中每一行的置信度值,0-1 |
+baike_info | object | 否 | 对应识别结果的百科词条名称 |
++baike_url | string | 否 | 对应识别结果百度百科页面链接 |
++image_url | string | 否 | 对应识别结果百科图片链接 |
++description | string | 否 | 对应识别结果百科内容描述 |
菜品识别 返回示例
{
"log_id": 7357081719365269362,
"result_num": 5,
"result": [
{
"calorie": "119",
"has_calorie": true,
"name": "酸汤鱼",
"probability": "0.396031"
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E9%85%B8%E6%B1%A4%E9%B1%BC/1754055",
"description": "酸汤鱼,是黔桂湘交界地区的一道侗族名菜,与侗族相邻的苗、水、瑶等少数民族也有相似菜肴,但其中以贵州侗族酸汤鱼最为有名,据考证此菜肴最早源于黎平县雷洞镇牙双一带。制作原料主要有鱼肉、酸汤、山仓子等香料。成菜后,略带酸味、幽香沁人、鲜嫩爽口开胃,是贵州“黔系”菜肴的代表作之一。这道菜通常先自制酸汤,之后将活鱼去掉内脏,入酸汤煮制。"
}
},
{
"calorie": "38",
"has_calorie": true,
"name": "原味黑鱼煲",
"probability": "0.265432",
},
{
"calorie": "144",
"has_calorie": true,
"name": "椒鱼片",
"probability": "0.0998993"
},
{
"calorie": "98",
"has_calorie": true,
"name": "酸菜鱼",
"probability": "0.0701917"
},
{
"calorie": "257.65",
"has_calorie": true,
"name": "柠檬鱼",
"probability": "0.0471465"
}]
}
logo商标识别
该请求用于检测和识别图片中的品牌LOGO信息。即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中LOGO的名称、位置和置信度。当效果欠佳时,可以建立子库(在控制台创建应用并申请建库)并通过调用logo入口接口完成自定义logo入库,提高识别效果。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用logo商标识别
result = client.logo_search(image, aip::null);
// 如果有可选参数
std::map<std::string, std::string> options;
options["custom_lib"] = "false";
// 带参数调用logo商标识别
result = client.logo_search(image, options);
logo商标识别 请求参数详情
参数名称 | 是否必选 | 类型 | 可选值范围 | 默认值 | 说明 |
---|---|---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 | ||
custom_lib | 否 | std::string | true - 返回自定义库 false - 返回自定义库+默认库的识别结果 |
false | 是否只使用自定义logo库的结果,默认false:返回自定义库+默认库的识别结果 |
logo商标识别 返回数据参数详情
参数 | 类型 | 是否必须 | 说明 | 示例 |
---|---|---|---|---|
log_id | number | 是 | 请求标识码,随机数,唯一 | 507499361 |
result_num | number | 是 | 返回结果数目,即:result数组中元素个数 | 2 |
result | array | 是 | 返回结果数组,每一项为一个识别出的logo | - |
+location | object | 是 | 位置信息(左起像素位置、上起像素位置、像素宽、像素高) | {"left": 100,"top":100,"width":10,"height":10} |
++left | number | 是 | 左起像素位置 | 100 |
++top | number | 是 | 上起像素位置 | 100 |
++width | number | 是 | 像素宽 | 100 |
++height | number | 是 | 像素高 | 100 |
+name | string | 是 | 识别的品牌名称 | 京东 |
+probability | number | 是 | 分类结果置信度(0--1.0) | 0.8 |
+type | number | 是 | type=0为1千种高优商标识别结果;type=1为2万类logo库的结果;其它type为自定义logo库结果 | 1 (2万类的结果) |
logo商标识别 返回示例
{
"log_id": 843411868,
"result_num": 1,
"result": [
{
"type": 0,
"name": "科颜氏",
"probability": 0.99998807907104,
"location": {
"width": 296,
"top": 20,
"height": 128,
"left": 23
}
}
]
}
logo商标识别—添加
使用入库接口请先在控制台创建应用并申请建库,建库成功后方可正常使用。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
std::string brief = "{\"name\": \"宝马\",\"code\":\"666\"}";
// 调用logo商标识别—添加
result = client.logo_add(image, brief, aip::null);
logo商标识别—添加 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 |
brief | 是 | std::string | brief,检索时带回。此处要传对应的name与code字段,name长度小于100B,code长度小于150B |
logo商标识别—添加 返回数据参数详情
参数 | 类型 | 是否必须 | 说明 | 示例 |
---|---|---|---|---|
log_id | number | 是 | 请求标识码,随机数,唯一 | 507499361 |
cont_sign | string | 是 | 输入图片签名,可用于删除 | - |
logo商标识别—添加 返回示例
{
"log_id": 972934653,
"cont_sign": "217113248,419422301"
}
logo商标识别—删除
使用删除接口请先在控制台创建应用并申请建库,建库成功后先调用入库接口完成logo图片入库,删除接口用户在已入库的logo图片中删除图片。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用删除logo商标,传入参数为图片
result = client.logo_delete_by_image(image, aip::null);
Json::Value result;
std::string cont_sign = "8cnn32frvrr2cd901";
// 调用删除logo商标,传入参数为图片签名
result = client.logo_delete_by_sign(cont_sign, aip::null);
logo商标识别—删除 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 |
cont_sign | 是 | std::string | 图片签名(和image二选一,image优先级更高) |
logo商标识别—删除 返回数据参数详情
参数 | 类型 | 是否必须 | 说明 | 示例 |
---|---|---|---|---|
log_id | number | 是 | 请求标识码,随机数,唯一 | 507499361 |
logo商标识别—删除 返回示例
{
"log_id": 50488417
}
动物识别
该请求用于识别一张图片。即对于输入的一张图片(可正常解码,且长宽比适宜),输出动物识别结果。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用动物识别
result = client.animal_detect(image, aip::null);
// 如果有可选参数
std::map<std::string, std::string> options;
options["top_num"] = "3";
options["baike_num"] = "5";
// 带参数调用动物识别
result = client.animal_detect(image, options);
动物识别 请求参数详情
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
---|---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 | |
top_num | 否 | std::string | 6 | 返回预测得分top结果数,默认为6 |
baike_num | 否 | std::string | 0 | 返回百科信息的结果数,默认不返回 |
动物识别 返回数据参数详情
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
log_id | uint64 | 是 | 唯一的log id,用于问题定位 |
result | array(object) | 是 | 识别结果数组 |
+name | string | 是 | 动物名称,示例:蒙古马 |
+score | uint32 | 是 | 置信度,示例:0.5321 |
+baike_info | object | 否 | 对应识别结果的百科词条名称 |
++baike_url | string | 否 | 对应识别结果百度百科页面链接 |
++image_url | string | 否 | 对应识别结果百科图片链接 |
++description | string | 否 | 对应识别结果百科内容描述 |
动物识别 返回示例
{
"log_id": 7392482912853822863,
"result": [{
"score": "0.993811",
"name": "叉角羚",
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E5%8F%89%E8%A7%92%E7%BE%9A/801703",
"description": "叉角羚(学名:Antilocapra americana):在角的中部角鞘有向前伸的分枝,故名。体型中等,体长1-1.5米,尾长7.5-10厘米,肩高81-104厘米,成体重36-60千克,雌体比雄体小;背面为红褐色,颈部有黑色鬃毛,腹部和臀部为白色,颊面部和颈部两侧有黑色块斑;毛被下面为绒毛,上覆以粗糙、质脆的长毛,由于某些皮肤肌的作用,能使其毛被呈不同角度,以利于保暖或散热。植食。叉角羚奔跑速度非常快,最高时速达100千米。一次跳跃可达3.5-6米。善游泳。夏季组成小群活动,冬季则集结成上百只的大群。为寻找食物和水源,一年中常进行几次迁移。性机警,视觉敏锐,能看到数千米外的物体。遇险时,臀部的白色毛能立起,向同伴告警。分布于北美洲。"
}
},
{
"score": "0.000289439",
"name": "印度羚"
},
{
"score": "0.000186248",
"name": "藏羚羊"
},
{
"score": "0.000147176",
"name": "跳羚"
},
{
"score": "0.000134434",
"name": "驯鹿"
},
{
"score": "9.86555e-05",
"name": "高鼻羚羊"
}]
}
植物识别
该请求用于识别一张图片。即对于输入的一张图片(可正常解码,且长宽比适宜),输出植物识别结果。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用植物识别
result = client.plant_detect(image, aip::null);
// 如果有可选参数
std::map<std::string, std::string> options;
options["baike_num"] = "5";
// 带参数调用植物识别
result = client.plant_detect(image, options);
植物识别 请求参数详情
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
---|---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 | |
baike_num | 否 | std::string | 0 | 返回百科信息的结果数,默认不返回 |
植物识别 返回数据参数详情
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
log_id | uint64 | 是 | 唯一的log id,用于问题定位 |
result | array(object) | 是 | 植物识别结果数组 |
+name | string | 是 | 植物名称,示例:吉娃莲 |
+score | uint32 | 是 | 置信度,示例:0.5321 |
+baike_info | object | 否 | 对应识别结果的百科词条名称 |
++baike_url | string | 否 | 对应识别结果百度百科页面链接 |
++image_url | string | 否 | 对应识别结果百科图片链接 |
++description | string | 否 | 对应识别结果百科内容描述 |
植物识别 返回示例
{
"log_id": 1705495792822072357,
"result": [{
"score": 0.99979120492935,
"name": "莲",
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E8%8E%B2/2717141",
"description": "莲(Nelumbo nucifera),又称荷、荷花、莲花、芙蕖、鞭蓉、水芙蓉、水芝、水芸、水旦、水华等,溪客、玉环是其雅称,未开的花蕾称菡萏,已开的花朵称鞭蕖,莲科,属多年生水生宿根草本植物,其地下茎称藕,能食用,叶入药,莲子为上乘补品,花可供观赏。是我国十大名花之一。是印度的国花。莲,双子叶植物,睡莲科。多年生挺水草本植物。根状茎横走,粗而肥厚,节间膨大,内有纵横通气孔道,节部缢缩。叶基生,挺出水面,盾形,直径30-90cm,波状边缘,上面深绿色,下面浅绿色。叶柄有小刺,长1-2m,挺出水面。花单生,直径10-25cm,椭圆花瓣多数,白色或粉红色;花柄长1-2m。花托在果期膨大,直径5-10cm,海绵质。坚果椭圆形和卵圆形,长1.5-2.0cm,灰褐色。种子卵圆形,长1.2-1.7cm,种皮红棕色。生于池塘、浅湖泊及稻田中。中国南北各省有自生或栽培,经济价值高。人们习惯上称种子为“莲子”、地下茎为“藕”、花托为“莲蓬”、叶为“荷叶”。"
}
},
{
"score": 0.00015144718054216,
"name": "红睡莲"
},
{
"score": 1.2172759852547e-05,
"name": "白睡莲"
},
{
"score": 6.305016540864e-06,
"name": "延药睡莲"
},
{
"score": 3.6133328649157e-06,
"name": "华夏慈姑"
}]
}
车型识别
识别图片中车辆的具体车型,可识别常见的3000+款车型(小汽车为主),输出车辆的品牌型号、颜色、年份、位置信息;支持返回对应识别结果的百度百科词条信息,包含词条名称、百科页面链接、百科图片链接、百科内容简介。
注:当前只支持单主体识别,若图片中有多个车辆,则识别目标最大的车辆。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用车型识别
result = client.car_detect(image, aip::null);
// 如果有可选参数
std::map<std::string, std::string> options;
options["top_num"] = "3";
options["baike_num"] = "5";
// 带参数调用车型识别
result = client.car_detect(image, options);
车型识别 请求参数详情
参数名称 | 是否必选 | 类型 | 默认值 | 说明 |
---|---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 | |
top_num | 否 | std::string | 返回预测得分top结果数,默认为5 | |
baike_num | 否 | std::string | 0 | 返回百科信息的结果数,默认不返回 |
车型识别 返回数据参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 唯一的log id,用于问题定位 |
color_result | 是 | string | 车身颜色 |
result | 是 | car-result() | 车型识别结果数组 |
+name | 是 | string | 车型名称,示例:宝马x6 |
+score | 是 | double | 置信度,取值范围0-1,示例:0.5321 |
+year | 是 | string | 年份 |
+baike_info | 否 | object | 对应识别结果的百科词条名称 |
++baike_url | 否 | string | 对应识别结果百度百科页面链接 |
++image_url | 否 | string | 对应识别结果百科图片链接 |
++description | 否 | string | 对应识别结果百科内容描述 |
location_result | 是 | string | 车辆在图片中的位置信息 |
+width | 是 | float | 车辆区域的宽度 |
+height | 是 | float | 车辆区域的高度 |
+left | 是 | float | 车辆区域离左边界的距离 |
+top | 是 | float | 车辆区域离上边界的距离 |
车型识别 返回示例
{
"log_id": 4086212218842203806,
"location_result": {
"width": 447,
"top": 226,
"height": 209,
"left": 188
},
"result": [{
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E5%B8%83%E5%8A%A0%E8%BF%AAChiron/20419512",
"description": "布加迪Chiron是法国跑车品牌布加迪出品的豪华超跑车。配置四涡轮增压发动机,420 公里每小时,有23种颜色的选择,售价高达260万美元。"
},
"score": 0.98793351650238,
"name": "布加迪Chiron",
"year": "无年份信息"
},
{
"score": 0.0021970034576952,
"name": "奥迪RS5",
"year": "2011-2017"
},
{
"score": 0.0021096928976476,
"name": "奥迪RS4",
"year": "无年份信息"
},
{
"score": 0.0015581247862428,
"name": "奥迪RS7",
"year": "2014-2016"
},
{
"score": 0.00082337751518935,
"name": "布加迪威航",
"year": "2004-2015"
}],
"color_result": "颜色无法识别"
}
车辆检测
传入单帧图像,检测图片中所有机动车辆,返回每辆车的类型和坐标位置,可识别小汽车、卡车、巴士、摩托车、三轮车5类车辆,并对每类车辆分别计数,同时可定位小汽车、卡车、巴士的车牌位置,支持指定矩形区域的车辆检测与数量统计。
当前主要适用于普通监控场景,如道路、停车场等,无人机高空拍摄的图片,因车辆目标较小,识别效果可能欠佳,后续会扩展支持超高空拍摄场景,如有该场景的需求,请通过QQ群或提交工单,详细沟通测试情况。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用车辆检测
result = client.vehicleDetect(image, aip::null);
std::string url = "https//www.x.com/sample.jpg"
result = client.vehicleDetectUrl(url, aip::null);
// 如果有可选参数
std::map<std::string, std::string> options;
options["area"] = ""
result = client.vehicleDetect(image, options);
result = client.vehicleDetectUrl(image, options);
请求参数详情
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
image | 和url二选一 | string | 0-255彩色图像(base64编码) | 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg,bmp,png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,) |
url | 和image二选一 | string | 0-255彩色图像(base64编码) | 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少50px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效。 |
area | 否 | string | 小于原图像素范围 | 只统计该矩形区域内的车辆数,缺省时为全图统计。 逗号分隔,如‘x1,y1,x2,y2,x3,y3...xn,yn',按顺序依次给出每个顶点的x、y坐标(默认尾点和首点相连),形成闭合矩形区域。 服务会做范围(顶点左边需在图像范围内)及个数校验(数组长度必须为偶数,且为4个顶点);目前只支持单个矩形区域。坐标取值不能超过图像宽度和高度,比如1280的宽度,坐标值最大到1279。 |
返回参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
vehicle_num | 是 | object | 检测到的车辆数目 |
+car | 是 | int | 小汽车数量 |
+truck | 是 | int | 卡车数量 |
+bus | 是 | int | 巴士数量 |
+motorbike | 是 | int | 摩托车数量 |
+tricycle | 是 | int | 三轮车数量 |
+carplate | 是 | int | 车牌的数量,小汽车、卡车、巴士才能检测到车牌 |
vehicle_info | 是 | object[] | 每个框的具体信息 |
+location | 是 | object | 检测到的目标坐标位置 |
++left | 是 | int32 | 目标检测框左坐标 |
++top | 是 | int32 | 目标检测框顶坐标 |
++width | 是 | int32 | 目标检测框宽度 |
++height | 是 | int32 | 目标检测框高度 |
+type | 是 | int32 | 目标物体类型,car、truck、bus、motorbike、tricycle、carplate |
+probability | 是 | float | 置信度分数,取值0-1之间,越接近1说明识别准确的概率越大 |
返回示例
未检测到任何车辆:
{
"vehicle_num":
{
"car":0,
"truck":0,
...
"tricycle":0
},
"vehicle_info":[]
}
检测到3辆小汽车、1辆卡车:
{
"vehicle_num": {
"motorbike": 0,
"tricycle": 0,
"car": 3,
"carplate": 0,
"truck": 1,
"bus": 0
},
"vehicle_info": [
{
"type": "car",
"location": {
"width": 73,
"top": 655,
"left": 1193,
"height": 49
},
"probability": 0.89164280891418
},
{
"type": "car",
"location": {
"width": 40,
"top": 582,
"left": 1026,
"height": 37
},
"probability": 0.75931918621063
},
{
"type": "car",
"location": {
"width": 131,
"top": 712,
"left": 1366,
"height": 68
},
"probability": 0.74551039934158
},
{
"type": "truck",
"location": {
"width": 348,
"top": 604,
"left": 229,
"height": 311
},
"probability": 0.80106335878372
}
]
}
图像单主体检测
用户向服务请求检测图像中的主体位置。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用图像主体检测
result = client.object_detect(image, aip::null);
// 如果有可选参数
std::map<std::string, std::string> options;
options["with_face"] = "0";
// 带参数调用图像主体检测
result = client.object_detect(image, options);
图像主体检测 请求参数详情
参数名称 | 是否必选 | 类型 | 可选值范围 | 默认值 | 说明 |
---|---|---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 | ||
with_face | 否 | std::string | 0 - 不带人脸区域 1 - 带人脸区域 |
1 | 如果检测主体是人,主体区域是否带上人脸部分,0-不带人脸区域,其他-带人脸区域,裁剪类需求推荐带人脸,检索/识别类需求推荐不带人脸。默认取1,带人脸。 |
图像主体检测 返回数据参数详情
参数 | 类型 | 是否必须 | 说明 | 示例 |
---|---|---|---|---|
log_id | number | 是 | 唯一的log id,用于问题定位 | 507499361 |
result | object | 是 | 裁剪结果 | - |
+left | number | 是 | 表示定位位置的长方形左上顶点的水平坐标 | 50 |
+top | number | 是 | 表示定位位置的长方形左上顶点的垂直坐标 | 60 |
+width | number | 是 | 表示定位位置的长方形的宽度 | 200 |
+height | number | 是 | 表示定位位置的长方形的高度 | 200 |
图像主体检测 返回示例
{
"log_id": 895582300,
"result": {
"width": 486,
"top": 76,
"left": 134,
"height": 394
}
}
地标识别
SDK 调用示例
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
std::string image_url = "http:image";
// 调用地标识别
result = client.landmark_v1(image, aip::null);
result = client.landmark_v1_url(image_url, aip::null);
接口详情
可参考API文档:地标识别
果蔬识别
该请求用于识别果蔬类食材,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中的果蔬食材结果。 注意:在正式使用之前,请前往细粒度图像识别页面提交合作咨询,或者申请加入百度图像识别官方QQ群(群号:659268104),提供公司名称、appid、应用场景、所需要入库的图片量,工作人员将协助开通调用求权限。注意,工作人员协助开通权限后该接口方可使用。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用食材识别
result = client.ingredient(image, aip::null);
// 如果有可选参数
std::map<std::string, std::string> options;
options["top_num"] = "3";
// 带参数调用食材识别
result = client.ingredient(image, options);
食材识别 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 |
top_num | 否 | std::string | 返回预测得分top结果数,如果为空或小于等于0默认为5;如果大于20默认20 |
食材识别 返回数据参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 唯一的log id,用于问题定位 |
result | 是 | object() | 识别结果 |
result_num | 否 | uint32 | 识别结果数 |
+name | 否 | string | 图像中的食材名称 |
+score | 否 | double | 得分,0-1 |
食材识别 返回示例
{
"log_id": 1091287364,
"result_num": 20,
"result": [
{
"name": "非果蔬食材",
"score": 0.99999988079071
},
{
"name": "油菜",
"score": 1.1175458780599e-8
},
{
"name": "蛇果",
"score": 7.2776291659693e-9
},
{
"name": "国光苹果",
"score": 5.6971951600815e-9
},
{
"name": "海枣",
"score": 4.2508210285064e-9
},
{
"name": "琼瑶浆葡萄",
"score": 4.1451895249622e-9
},
{
"name": "京锐号辣椒",
"score": 3.9915102334476e-9
},
{
"name": "冬瓜",
"score": 3.3611948779821e-9
},
{
"name": "长江豆",
"score": 2.9944848822794e-9
},
{
"name": "黑加仑",
"score": 2.7750137743254e-9
},
{
"name": "面包果",
"score": 2.3357531464541e-9
},
{
"name": "椰子",
"score": 1.9741890344704e-9
},
{
"name": "美人瓜",
"score": 1.9319581490151e-9
},
{
"name": "莲藕",
"score": 1.759222323372e-9
},
{
"name": "黑奥林",
"score": 1.7266311713726e-9
},
{
"name": "芥菜",
"score": 1.6180708994895e-9
},
{
"name": "样芹菜",
"score": 1.5472728653876e-9
},
{
"name": "篙巴",
"score": 1.4084827748562e-9
},
{
"name": "花生",
"score": 1.3972580870103e-9
},
{
"name": "魁绿猕猴桃",
"score": 1.3920842256709e-9
}
]
}
红酒识别
该服务用于识别红酒标签,即对于输入的一张图片(可正常解码,长宽比适宜,且酒标清晰可见),输出图片中的红酒名称、国家、产区、酒庄、类型、糖分、葡萄品种、酒品描述等信息。可识别数十万中外常见红酒。 注意:图片中酒标要清晰可见,示例图片如下
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用红酒识别
result = client.redwine(image, aip::null);
红酒识别 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 |
红酒识别 返回数据参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
result | 是 | dict | 识别结果 |
+hasdetail | 是 | unit | 判断是否返回详细信息(除红酒中文名之外的其他字段),含有返回1,不含有返回0 |
+wineNameCn | 是 | string | 红酒中文名,无法识别返回空,示例:波斯塔瓦经典赤霞珠品丽珠半甜红葡萄酒 |
+wineNameEn | 否 | string | 红酒英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Bostavan Classic Cabernet |
+countryCn | 否 | string | 国家中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:摩尔多瓦 |
+countryEn | 否 | string | 国家英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Moldova |
+regionCn | 否 | string | 产区中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:波尔多 |
+regionEn | 否 | string | 产区英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Bordeaux |
+subRegionCn | 否 | string | 子产区中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:梅多克 |
+subRegionEn | 否 | string | 子产区英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Medoc |
+wineryCn | 否 | string | 酒庄中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:波斯塔瓦酒庄 |
+wineryEn | 否 | string | 酒庄英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Vinaria Bostavan |
+classifyByColor | 否 | string | 酒类型,hasdetail = 0时,表示无法识别,该字段不返回,示例:红葡萄酒 |
+classifyBySugar | 否 | string | 糖分类型,hasdetail = 0时,表示无法识别,该字段不返回,示例:半甜型 |
+color | 否 | string | 色泽,hasdetail = 0时,表示无法识别,该字段不返回,示例:宝石红色 |
+grapeCn | 否 | string | 葡萄品种,可能有多种葡萄,hasdetail = 0时,表示无法识别,该字段不返回,示例:品丽珠;赤霞珠 |
+grapeEn | 否 | string | 葡萄品种英文名,可能有多种葡萄,hasdetail = 0时,表示无法识别,该字段不返回,示例:Cabernet Franc;Cabernet Sauvignon |
+tasteTemperature | 否 | string | 品尝温度,hasdetail = 0时,表示无法识别,该字段不返回,示例:6-11℃ |
+description | 否 | string | 酒品描述,hasdetail = 0时,表示无法识别,该字段不返回,示例:葡萄酒呈深宝石红色,具有香料、香草和新鲜水果的果香,酒体分明,口感畅顺,果香横溢,单宁软化程度高,让你回味无穷 |
红酒识别 返回示例
{
"log_id": 3450013152046070669,
"result":
{
"wineNameCn": "银色高地阙歌干红",
"hasdetail":0
}
}
货币识别
识别图像中的货币类型,以纸币为主,正反面均可准确识别,接口返回货币的名称、代码、面值、年份信息;可识别各类近代常见货币,如美元、欧元、英镑、法郎、澳大利亚元、俄罗斯卢布、日元、韩元、泰铢、印尼卢比等。 注意:图片中货币要清晰可见,示例图片如下
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用货币识别
result = client.currency(image, aip::null);
货币识别 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | std::string | 图片数据的二进制字符串,可以使用aip::get_file_content函数获取 |
货币识别 返回数据参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 请求标识码,随机数,唯一 |
result | 是 | dict | 识别结果 |
+hasdetail | 是 | unit | 判断是否返回详细信息(除货币名称之外的其他字段),含有返回1,不含有返回0 |
+currencyName | 是 | string | 货币名称,无法识别返回空,示例:新加坡元 |
+currencyCode | 否 | string | 货币代码,hasdetail = 0时,表示无法识别,该字段不返回,示例:SGD |
+currencyDenomination | 否 | string | 货币面值,hasdetail = 0时,表示无法识别,该字段不返回,示例:50元 |
+year | 否 | string | 货币年份,hasdetail = 0时,表示无法识别,该字段不返回,示例:2004年 |
货币识别 返回示例
{
"log_id": 4247844653395235754,
"result": {
"currencyName": "美元",
"hasdetail": 1,
"currencyCode": "USD",
"year": "2001年",
"currencyDenomination": "50美元"
}
}
组合接口
提供一个API接口,同时调用多个模型服务。支持图像识别的多个接口:通用物体和场景识别、图像单主体检测、动物识别、植物识别、logo识别-检索、果蔬识别、自定义菜品识别-检索、菜品识别、红酒识别、货币识别、地标识别、图像多主体检测等12个模型服务的调用。可通过入参灵活指定需要调用的模型服务,传入图像,返回指定模型的识别结果。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用接口
std::vector<std::string> scene={"animal","plant"};
result = client.combination(image,scene,aip::null);
//url
result = client.combinationUrl("http//localhost.jpg",scene,aip::null);
请求参数详情
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
image | string | 是 | 图像数据,base64编码,示例如:/9j/4AAQSkZJRgABAQEPMpJkR0FdXVridlPy/9k= |
imgUrl | string | 否 | 图像Url,不能与image并存,不需要urlEncode,示例如:https://aip.bdstatic.com/portal-pc-node/dist/1591263471100/images/technology/imagerecognition/general/1.jpg |
scenes | array | 是 | 指定本次调用的模型服务,以字符串数组表示。元素含义如下: advanced_general:通用物体和场景识别 object_detect:图像单主体检测 multi_object_detect:图像多主体检测 animal:动物识别 plant:植物识别 logo_search:logo识别-检索 ingredient:果蔬识别 dish_search:自定义菜品识别-检索 dishs:菜品识别 red_wine:红酒识别 currency:货币识别 landmark:地标识别 示例如:“scenes”:[“currency”,”animal”,”plant”] |
sceneConf | jsonObject | 否 | 对特定服务,支持的个性化参数,若不填则使用默认设置。jsonObject说明: key为要设置入参的服务类型,可取值同scenes字段,例如: advanced_general:通用物体和场景识别 object_detect:图像单主体检测 value为各模型服务个性化参数,详情请参照下文或百度AI开放平台官网“图像识别具体接口文档” |
返回参数详情
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
log_id | uint64 | 是 | 唯一的log id,用于问题定位。 |
result | object | 是 | 返回结果json串,其内包含要调用的各个模型服务的返回结果。 |
advanced_general | object | 否 | 「通用物体和场景识别」服务返回结果。请参照“通用物体和场景识别接口文档” |
object_detect | object | 否 | 「图像单主体检测」服务返回结果。请参照“图像单主体检测接口文档” |
multi_object_detect | object | 否 | 「图像多主体检测」服务返回结果。请参照“图像多主体检测接口文档” |
animal | object | 否 | 「动物识别」服务返回结果。请参照“动物识别接口文档” |
plant | object | 否 | 「植物识别」服务返回结果。请参照“植物识别接口文档” |
logo_search | object | 否 | 「logo识别-检索」服务返回结果。请参照“logo识别-检索接口文档)” |
ingredient | object | 否 | 「果蔬识别」服务返回结果。请参照“果蔬识别接口文档” |
dish_search | object | 否 | 「自定义菜品识别-检索」服务返回结果。请参照“自定义菜品识别-检索接口文档” |
dishs | object | 否 | 「菜品识别」服务返回结果。请参照“菜品识别接口文档” |
red_wine | object | 否 | 「红酒识别」服务返回结果。请参照“红酒识别接口文档” |
currency | object | 否 | 「货币识别」服务返回结果。请参照“货币识别接口文档” |
landmark | object | 否 | 「地标识别」服务返回结果。请参照“地标识别接口文档” |
返回示例
- 成功响应示例:
{
"result": {
"plant": {
"result": [
{
"score": 0.4343205690383911,
"name": "非植物"
}
],
"log_id": 1888121902459717818
},
"animal": {
"result": [
{
"score": "0.71102",
"name": "松鼠猴"
},
{
"score": "0.0548481",
"name": "卷尾猴"
},
{
"score": "0.0444465",
"name": "蜘蛛猴"
},
{
"score": "0.041044",
"name": "金丝猴"
},
{
"score": "0.0377901",
"name": "长尾猴"
},
{
"score": "0.0176039",
"name": "长臂猿"
}
],
"log_id": 7358927584635575930
}
},
"log_id": 15904950726810006
}
- 失败响应示例:
{
"log_id": 15904942500190005,
"error_msg": "service not support",
"error_code": 216102
}
错误码说明
错误码 | 错误信息 | 描述 |
---|---|---|
415 | not support the media type | 请求格式错误,请检查请求参数代码 |
216101 | not enough param | 参数不足 |
216102 | service not support | 输入了不支持的底层服务类型 |
216500 | unknown error | 未知错误 |
282801 | image and imgUrl are empty | image和imgUrl均为空 |
282802 | either image and imgUrl has value | image和imgUrl只能有一个有值 |
282804 | download image error | 图片下载失败 |
282000 | logic internal error | 业务逻辑层错误 |
果蔬识别
该请求用于识别果蔬类食材,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中的果蔬食材结果。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用接口
result = client.ingredient(image,vrief,aip::null);
请求参数详情
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
image | 和url二选一 | string | 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式。注意:图片需要base64编码、去掉编码头(data:image/jpg;base64,) 后,再进行urlencode。 |
|
url | 和image二选一 | string | 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效。 | |
top_num | 否 | unit32 | 返回预测得分top结果数,如果为空或小于等于0默认为5;如果大于20默认20 |
返回参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 唯一的log id,用于问题定位 |
result | 是 | object() | 识别结果 |
result_num | 否 | unit32 | 识别结果数 |
+name | 否 | string | 图像中的食材名称 |
+score | 否 | double | 得分,0-1 |
返回示例
{
"log_id": 1091287364,
"result_num": 20,
"result": [
{
"name": "非果蔬食材",
"score": 0.99999988079071
},
{
"name": "油菜",
"score": 1.1175458780599e-8
},
{
"name": "蛇果",
"score": 7.2776291659693e-9
},
{
"name": "国光苹果",
"score": 5.6971951600815e-9
},
{
"name": "海枣",
"score": 4.2508210285064e-9
},
{
"name": "琼瑶浆葡萄",
"score": 4.1451895249622e-9
},
{
"name": "京锐号辣椒",
"score": 3.9915102334476e-9
},
{
"name": "冬瓜",
"score": 3.3611948779821e-9
},
{
"name": "长江豆",
"score": 2.9944848822794e-9
},
{
"name": "黑加仑",
"score": 2.7750137743254e-9
},
{
"name": "面包果",
"score": 2.3357531464541e-9
},
{
"name": "椰子",
"score": 1.9741890344704e-9
},
{
"name": "美人瓜",
"score": 1.9319581490151e-9
},
{
"name": "莲藕",
"score": 1.759222323372e-9
},
{
"name": "黑奥林",
"score": 1.7266311713726e-9
},
{
"name": "芥菜",
"score": 1.6180708994895e-9
},
{
"name": "样芹菜",
"score": 1.5472728653876e-9
},
{
"name": "篙巴",
"score": 1.4084827748562e-9
},
{
"name": "花生",
"score": 1.3972580870103e-9
},
{
"name": "魁绿猕猴桃",
"score": 1.3920842256709e-9
}
]
}
图像多主体检测
检测出图片中多个主体,并给出位置、标签和置信得分。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 图像多主体检测
result = client.multobjectdetect(image,vrief,aip::null);
请求参数
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
image | true | string | - | 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,最短边至少64px,最长边最大4096px,长宽比3:1以内,支持jpg/png/bmp格式 。注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)去掉编码头后再进行urlencode。 |
返回说明
返回参数
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 唯一的log id,用于问题定位 |
result | 否 | object数组 | 返回结果 |
+name | 否 | string | 图片标签 |
+score | 否 | float | 置信度得分 |
+location | 否 | object数组 | 图中目标主体的检测框位置信息 |
++left | 否 | uint32 | 表示定位位置的长方形左上顶点的水平坐标 |
++top | 否 | uint32 | 表示定位位置的长方形左上顶点的垂直坐标 |
++width | 否 | uint32 | 表示定位位置的长方形的宽度 |
++height | 否 | uint32 | 表示定位位置的长方形的高度 |
返回示例
{
"log_id": 4160887777964368179,
"result": [
{
"score": 0.8241143226623535,
"name": "果蔬生鲜",
"location": {
"width": 89,
"top": 113,
"left": 383,
"height": 204
}
},
{
"score": 0.8606756329536438,
"name": "家居家纺",
"location": {
"width": 112,
"top": 105,
"left": 139,
"height": 203
}
},
{
"score": 0.6238403916358948,
"name": "食品饮料",
"location": {
"width": 67,
"top": 125,
"left": 491,
"height": 176
}
},
{
"score": 0.10546552389860153,
"name": "文化娱乐",
"location": {
"width": 48,
"top": 183,
"left": 231,
"height": 95
}
},
{
"score": 0.7283627986907959,
"name": "家居家电",
"location": {
"width": 72,
"top": 89,
"left": 285,
"height": 244
}
}
]
}
自定义菜品识别-入库
该接口实现单张菜品图片入库,入库时需要同步提交图片及可关联至本地菜品图库的摘要信息(具体变量为brief,brief可传入图片在本地标记id、图片url、图片名称等)
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 自定义菜品识别-入库
std::string vrief="{\"菜名\":\"鱼香肉丝\"}";
result = client.dishadd(image,vrief,aip::null);
请求参数
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
image | 是 | string | - | Base64编码字符串,以图片文件形式请求时必填。(支持图片格式:jpg,bmp,png,jpeg-1574500464364.),图片大小不超过4M。最短边至少300px,最长边最大3000px。注意:图片需要base64编码、去掉编码头后再进行urlencode。 |
brief | 是 | string | - | 菜品名称摘要信息,检索时带回,不超过256B。由于检索后需要与本地数据库关联,建议brief可传入图片在本地标记id、图片url、图片名称等,如"brief": "{\"菜名\":\"鱼香肉丝\"}" |
返回说明
返回参数
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 否 | uint64 | 唯一的log id,用于问题定位 |
cont_sign | 否 | string | 输入图片签名 |
返回示例
HTTP/1.1 200 OK
x-bce-request-id: 73c4e74c-3101-4a00-bf44-fe246959c05e
Cache-Control: no-cache
Server: BWS
Date: Tue, 18 Oct 2016 02:21:01 GMT
Content-Type: application/json;charset=UTF-8
{
"cont_sign": "222,333",
"log_id": 1837888624
}
自定义菜品识别-检索
在已自建菜品库并入库的情况下,该接口实现单菜品/多菜品的识别。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 自定义菜品识别-检索
result = client.dishsearch(image, aip::null);
请求参数
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
image | true | string | - | 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,最短边至少64px,最长边最大4096px,长宽比3:1以内,支持jpg/png/bmp格式 。注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,)去掉编码头后再进行urlencode。 |
返回参数
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint64 | 唯一的log id,用于问题定位 |
result_num | 是 | uint32 | 检索结果数 |
result | 是 | object[] | 识别结果数组 |
+location | 是 | object | 菜品在图片中的位置 |
++left | 是 | int | 水平坐标(左上角原点) |
++top | 是 | int | 垂直坐标(左上角原点) |
++width | 是 | int | 宽度 |
++height | 是 | int | 高度 |
+dishes | 是 | object[] | 识别结果数组 |
++cont_sign | 是 | string | 图片签名,可以用来删除图片或问题定位 |
++score | 是 | float | 图片相关性,0-1 |
++brief | 是 | string | 入库菜品时添加的brief信息 |
返回示例
{
"result_num": 2,
"result": [
{
"location": {
"left": 127,
"top": 70,
"width": 103,
"height": 101
},
"dishes": [
{
"score": 0.47976872324944,
"brief": "{\"name\":\"baicai\",\"id\":333}",
"cont_sign": "475124309,1080176642"
}
]
},
{
"location": {
"left": 312,
"top": 163,
"width": 78,
"height": 79
},
"dishes": [
{
"score": 0.013810452073812,
"brief": "{\"name\":\"doufu\",\"id\":333}",
"cont_sign": "475124309,1080176642"
}
]
}
],
"log_id": 1837888624
}
自定义菜品识别-删除
该接口实现已入库菜品图片的删除操作。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用自定义菜品识别-删除 根据图片
result = client.dishdeletebyimage(image, aip::null);
// 调用自定义菜品识别-删除 根据签名
result = client.dishdeletebycontsign(cont_sign, options);
请求参数
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
image | 否 | string | - | Base64编码字符串(和cont_sign二选一),以图片文件形式请求时必填。图片大小不超过4M。最短边至少300px,最长边最大3000px。注意:图片需要base64编码、去掉编码头后再进行urlencode。 |
cont_sign | 否 | string | - | 图片签名(和image二选一,image优先级更高) |
返回参数
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 否 | uint64 | 唯一的log id,用于问题定位 |
返回示例
{
"log_id": 1837888624
}
车辆属性识别
传入单帧图像,检测图片中所有车辆,返回每辆车的类型和坐标位置,可识别小汽车、卡车、巴士、摩托车、三轮车、自行车6大类车辆,并针对小汽车识别11种外观属性,包括:是否有车窗雨眉、是否有车顶架、副驾驶是否有人、驾驶位是否系安全带、遮阳板是否放下、车辆朝向等。
当前主要适用于普通监控场景,如道路、停车场等,无人机高空拍摄的图片,因车辆目标较小,识别效果可能欠佳,后续会扩展支持超高空拍摄场景,如有该场景的需求,请通过QQ群或提交工单,详细沟通测试情况。
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用车辆属性识别
result = client.vehicleAttr(image, aip::null);
std::string url = "https//www.x.com/sample.jpg"
result = client.vehicleAttrUrl(url, aip::null);
// 如果有可选参数
std::map<std::string, std::string> options;
options["type"] = "roof_rack"
result = client.vehicleAttr(image, options);
result = client.vehicleAttrUrl(image, options);
请求参数详情
参数 | 是否必选 | 类型 | 取值范围 | 说明 |
---|---|---|---|---|
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 | 是否选定某些属性输出对应的信息,可从12种输出属性中任选若干,用英文逗号分隔(例如vehicle_type,roof_rack,skylight)。默认输出全部属性 |
附:type字段说明
ID | type | 说明 | 类别数 | 类别 |
---|---|---|---|---|
0 | vehicle_type | 车辆类型 | 6 | 小汽车、卡车、公交车、摩托、三轮车、自行车 |
1 | window_rain_eyebrow | 是否有车窗雨眉 | 2 | 无车窗雨眉、有车窗雨眉 |
2 | roof_rack | 是否有车顶架 | 2 | 无车顶架、有车顶架 |
3 | skylight | 是否有天窗 | 2 | 无天窗、有天窗 |
4 | in_car_item | 是否有车内摆放物 | 2 | 无车内摆放物、有车内摆放物 |
5 | rearview_item | 是否有后视镜悬挂物 | 2 | 无后视镜悬挂物、有后视镜悬挂物 |
6 | copilot | 副驾驶是否有人 | 2 | 副驾驶无人、副驾驶有人 |
7 | driver_belt | 驾驶位是否系安全带 | 2 | 驾驶位未系安全带、驾驶位系安全带 |
8 | copilot_belt | 副驾驶位是否系安全带 | 2 | 副驾驶位未系安全带、副驾驶位系安全带 |
9 | driver_visor | 驾驶位遮阳板是否放下 | 2 | 驾驶位遮阳板未放下、驾驶位遮阳板放下 |
10 | copilot_visor | 副驾驶位遮阳板是否放下 | 2 | 副驾驶位遮阳板未放下、副驾驶位遮阳板放下 |
11 | direction | 车辆朝向 | 8 | 正前方,右前方,正右方,右后方,正后方,左后方,正左方,左前方 |
返回参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
vehicle_num | 是 | int | 检测到的车辆框数目 |
vehicle_info | 是 | object数组 | 每个车辆检测框的具体信息 |
+location | 是 | object | 检测到的车辆框位置 |
++left | 是 | int | 检测框左坐标 |
++top | 是 | int | 检测框顶坐标 |
++width | 是 | int | 检测框宽度 |
++height | 是 | int | 检测框高度 |
+attributes | 否 | object数组 | 包含所有车辆属性内容 |
++vehicle_type | 否 | object | 车辆类型 |
+++name | 否 | string | 如"小汽车" |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值 |
++window_rain_eyebrow | 否 | object | 是否有车窗雨眉 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大(即有车窗雨眉),实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.02 |
++roof_rack | 否 | object | 是否有车顶架 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.01 |
++skylight | 否 | object | 是否有天窗 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.5 |
++in_car_item | 否 | object | 是否有车内摆放物 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.35 |
++rearview_item | 否 | object | 是否有后视镜悬挂物 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.4 |
++copilot | 否 | object | 副驾驶是否有人 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.55 |
++driver_belt | 否 | object | 驾驶位是否系安全带 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.75 |
++copilot_belt | 否 | object | 副驾驶位是否系安全带 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.85 |
++driver_visor | 否 | object | 驾驶位遮阳板是否放下 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.2 |
++copilot_visor | 否 | object | 副驾驶位遮阳板是否放下 |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值,推荐阈值0.1 |
++direction | 否 | object | 车辆朝向 |
+++name | 否 | string | 如"正前方" |
+++score | 否 | float | 对应概率分数,分数越大代表属性的正向取值可能性越大,实际应用中可根据测试情况选取合适的score阈值 |
返回示例
未检测到任何车辆:
{
"vehicle_num": 0,
"vehicle_info":
[
{
"location":
{
"left": 0,
"top": 0,
"width": 0,
"height": 0
"score": 0
}
"attributes":
{
}
}
]
}
检测到2辆小汽车:
{
"vehicle_num": 2,
"vehicle_info":
[
{
"location":
{
"left": 100,
"top": 200,
"width": 200,
"height": 400
}
"attributes":
{
"vehicle_type":
{
"name": "小汽车",
"score": 0.852
}
"window_rain_eyebrow":
{
"score": 0.937
}
"roof_rack":
{
"score": 0.889
}
"skylight":
{
"score": 0.925
}
"in_car_item":
{
"score": 0.774
}
"rearview_item":
{
"score": 0.774
}
"copilot":
{
"score": 0.711
}
"driver_belt":
{
"score": 0.633
}
"copilot_belt":
{
"score": 0.721
}
"driver_visor":
{
"score": 0.455
}
"copilot_visor":
{
"score": 0.455
}
"direction":
{
"name": "正前方",
"score": 0.455
}
}
}
{
"location":
{
"left": 400,
"top": 200,
"width": 200,
"height": 400
}
"attributes":
{
"vehicle_type":
{
"name": "小汽车",
"score": 0.921
}
"window_rain_eyebrow":
{
"score": 0.918
}
"roof_rack":
{
"score": 0.850
}
"skylight":
{
"score": 0.714
}
"in_car_item":
{
"score": 0.787
}
"rearview_item":
{
"score": 0.787
}
"copilot":
{
"score": 0.711
}
"driver_belt":
{
"score": 0.633
}
"copilot_belt":
{
"score": 0.721
}
"driver_visor":
{
"score": 0.455
}
"copilot_visor":
{
"score": 0.455
}
"direction":
{
"name": "右前方",
"score": 0.455
}
}
}
]
}
车辆外观损伤识别
针对常见的小汽车车型,识别车辆外观受损部件及损伤类型,支持32种车辆部件、5大类外观损伤。同时可输出损伤的数值化结果(长宽、面积、部件占比),支持单图多种损伤的识别。
- 可识别的32种汽车外观零部件:前保险杠、机盖、左前叶子板、左A柱、左前门、左后叶子板、左底大边、后保险杠、行李箱盖、右后叶子板、右底大边、右后门、右前门、右前叶子板、右A柱、车顶、钢圈、中网、左前大灯、左前雾灯、左前雾灯框、右前大灯、右前雾灯、右前雾灯框、前保下隔栅、左后视镜、右后视镜、左后外尾灯、左后内尾灯、右后外尾灯、右后内尾灯、左后门
- 可识别的5类外观损伤:刮擦、凹陷、开裂、褶皱、穿孔(一般指有破洞的情况)
Json::Value result;
std::string image;
aip::get_file_content("/assets/sample.jpg", &image);
// 调用车辆外观损伤识别
result = client.vehicleDamage(image, aip::null);
请求参数详情
参数 | 是否必选 | 类型 | 取值范围 | 说明 |
---|---|---|---|---|
image | 是 | string | 0-255彩色图像(base64编码) | 图像数据,Base64编码字符串,不超过4M。最短边至少50px,最长边最多4096px。支持图片格式:jpg,bmp,png。 注意:图片的base64编码是不包含图片头的,如(data:image/jpg;base64,) |
图片拍摄方式建议与要求:
- 水平方向放置手机或其他拍照设备;
- 正对受损部位,使得受损部位位于图像中心2/3区域内;
- 调节手机与受损部位之间的距离,使得整张图能看出受损车辆部件,同时能看清受损区域,尽量减少车身反光、污渍干扰;
-
拍摄图片分辨率要求1280 * 720以上,拍摄清晰无模糊、遮挡。
返回参数详情
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | uint32 | 请求标识码,随机数,唯一;用于排查问题 |
result | 是 | object | 识别结果 |
+description | 否 | string | 检验图片效果是否满足识别要求,包含车辆检测、图片内容过滤两部分 1、图片符合要求时,返回very good,返回示例:"Very good【车辆局部特写图】【1.000000】" 2、图片不符合要求时,显示检验不通过的描述信息: 1)没检测到车辆,返回示例:"No car detected !" 2)检测到了车辆,但图片内容未通过校验,返回描述信息【前端过滤类别】【概率值】,返回示例:"Failed【散落部件】【0.303969】" |
+damage_info | 否 | object[] | 部件损伤信息 |
++parts | 否 | string | 汽车零部件名称,共计支持32种零部件 |
++type | 否 | unit32 | 损伤类别,共计支持5类外观损伤;无损伤则返回“正常” 。注:如果全图无损伤,则整个返回结果为空;某个部件的type为“正常”仅表示该部件无损伤。 |
++probability | 否 | float | 概率打分 |
++numeric_info | 否 | object[] | 损伤的数值化输出结果,如果有多处损伤,则有多个object;损伤的部件需拍摄完整,才能输出数值化结果,否则只返回部件名称和损伤类别,不输出数值化信息 |
+++length | float | 否 | 损伤区域的长,单位厘米 |
+++width | float | 否 | 损伤区域的宽,单位厘米 |
+++area | float | 否 | 损伤区域的面积,为实际面积,不是单纯的长*宽 |
+++ratio | float | 否 | 损伤区域面积相对于部件面积的占比,= 损伤区域面积 / 部件区域面积,均为实际面积,不是单纯的长*宽 |
返回示例
图片不满足识别需求,未检测到汽车:
{
"description":"No car detected !",
"damage_info":[]
}
图片不满足识别需求,检测到汽车,但未通过图片内容校验:
{
"description":"Failed[散落部件][0.303969]",
"damage_info":[]
}
图片满足识别需求,正常返回,不包含数值化输出结果,有两处损伤:
{
"description":"Very good[车辆局部特写图][1.000000]",
"damage_info":[
{
"parts":前保险杠,
"probability":89,
"type":刮擦
},
{
"parts":左前叶子板,
"probability":74,
"type":凹陷
}
]
}
图片满足识别需求,正常返回,包含数值化输出结果,有两处损伤:
{
"description":"Very good[车辆局部特写图][1.000000]",
"damage_info":[
{
"numeric_info":[
{
"area":3.540100097656250,
"height":5.260000228881836,
"ratio":0.04069080576300621,
"width":1.139999985694885
}
],
"parts":前保险杠,
"probability":95,
"type":刮擦,
"numeric_info":[
{
"area":2.418999910354614,
"height":2.750,
"ratio":0.08458041399717331,
"width":1.460000038146973
}
],
"parts":左前叶子板,
"probability":84,
"type":刮擦
}
]
}