功能描述
识别图片中的车辆、人体等目标,返回目标位置信息并进行打码,该功能支持以下处理方式:
上传时处理
云上数据处理
授权说明
上传时处理:授权策略中 action 设置为
cos:PutObject
。云上数据处理:授权策略中 action 设置为
cos:PutObject
(注意 PutObject 对应的 resource 为转存的文件)。服务开通
使用限制
图片格式:PNG、JPG、JPEG。
图片大小:不超过20M。
图片像素:长边不可超过7680像素。
接口超时时间:5秒。
费用说明
该接口为付费服务,产生的费用将由数据万象收取,将按调用情况产生以下部分功能用量及费用:
若开启了打码功能,将产生 基础图片处理费用,按输出图片的大小计费。
若开启人体识别,将产生 人体识别费用,按接口调用次数计费。
若开启人脸识别,将产生 人脸检测费用,按接口调用次数计费。
若开启车辆识别或车牌识别,将产生 汽车识别费用,按接口调用次数计费,(同时开启车辆车牌两项或仅开启其中一项,调用一次接口的识别次数均为1次);
接口请求示例
方式一:上传时处理
上传时处理方式支持您在上传时实现图片处理,您只需要在请求包头部中加入 Pic-Operations 项并设置好相应的识别打码参数,就可在图片上传时将原图和打码后的图片存入到 COS。
PUT /<ObjectKey> HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: GMT DateAuthorization: Auth StringPic-Operations: {"is_pic_info":1,"rules":[{"fileid":"test.jpg","rule":"ci-process=ImageTargetRec&detect-type=car,face,plate,body&cover=1"}]}
方式二:云上数据处理
云上数据处理方式支持您对已存储在 COS 的图片进行相应处理操作,并将原图和打码后的图片存入到 COS。
POST /<ObjectKey>?image_process HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: GMT DateAuthorization: Auth StringPic-Operations: {"is_pic_info":1,"rules":[{"fileid":"test.jpg","rule":"ci-process=ImageTargetRec&detect-type=car,face,plate,body&cover=1"}]}
说明:
以上两种方式均不支持匿名请求。
Authorization:携带鉴权信息,用于验证请求的合法性的请求头,Pic-Operations 头部需签入签名信息中,详情请参见 请求签名 文档。
Pic-Operations 的值为 json 格式的字符串,具体参数见下方处理参数说明。
请求参数说明
参数名称 | 描述 | 是否必选 | 类型 |
ObjectKey | 对象的名称,例如 folder/sample.jpg。 | 是 | String |
image_process | 仅在云上数据处理方式中需要,表示图片处理的参数,固定为image_process。 | 是 | String |
is_pic_info | 是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0。 | 否 | Int |
rules | 处理规则,一条规则对应一个处理结果(目前支持五条规则),不填则不进行图片处理。 | 否 | Array |
Pic-Operations 中的参数说明:
参数名称 | 描述 | 是否必选 | 类型 |
is_pic_info | 是否返回原图信息,0 表示不返回原图信息,1 表示返回原图信息,默认为0。 | 否 | Int |
rules | 处理规则,一条规则对应一个处理结果(目前支持五条规则),不填则不进行处理。 | 否 | Array |
rules(json 数组)中每一项具体参数如下:
参数名称 | 描述 | 是否必选 | 类型 |
bucket | 存储结果的目标 bucket 名称,形如 BucketName-APPID,如果不指定的话默认保存到当前存储桶。 | 否 | String |
fileid | 处理后文件的保存路径及名称。 当 fileid 与 ObjectKey 相同时,处理后的文件将覆盖原文件存储;不相同时将分别存储原文件和处理后文件。名称规则说明:1. 名称需要经过URLEncode。 2. 以 / 开头为绝对路径,例如 fileid 值为 /p2/test2.jpg 时,表示在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件。3. 不以 / 开头为相对路径,例如 fileid 值为 p2/test2.jpg 时,表示在ObjectKey 所在的文件夹中新建了一个 p2 文件夹,然后在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件。注意:请不要以 / 结尾,否则会产生空文件名。 | 是 | String |
rule | 处理规则,其中包含参数: ci-process 、detect-type 、cover | 是 | String |
rule 中每一项具体参数说明如下:
参数名称 | 描述 | 是否必选 | 类型 |
ci-process | 标识数据万象处理功能的字段,图片智能打码的值为:ImageTargetRec。 | 是 | String |
detect-type | 识别类型,可选值:face(人脸),plate(车牌),body(人体),car(车辆),多个类型通过","分割。 默认值为:face,plate,表示同时识别人脸和车牌。 | 否 | String |
cover | 该参数需要与 detect-type 联合使用,用于对识别出的目标进行打码,可选值:0(不打码),1(打码),默认值为:0。 | 否 | Int |
请求头
请求体
该请求无请求体。
接口响应示例
响应头
响应体
该响应体返回为 application/xml 数据,包含完整节点数据的内容展示如下:
HTTP/ 1.1 200 OKContent-Type: application/xmlContent-Length: 414641Date: Thu, 15 Jun 2017 12:37:29 GMTServer: tencent-imagex-ci-request-id: NTk0MjdmODlfMjQ4OGY3XzYzYzhf****<UploadResult><OriginalInfo><Key>ra.jpg</Key><Location>peter-cq-1251704708.cos.ap-chongqing.myqcloud.com/ra.jpg</Location><ImageInfo><Md5>ed874e261c9c82a2dadff9252c11e5ae</Md5><Format>PNG</Format><Width>1080</Width><Height>971</Height><Quality>100</Quality><Ave>0x836b53</Ave><FrameCount>1</FrameCount><BitDepth>8</BitDepth><VerticalDpi>37</VerticalDpi><HorizontalDpi>37</HorizontalDpi></ImageInfo><ETag>"ed874e261c9c82a2dadff9252c11e5ae"</ETag></OriginalInfo><ProcessResults><Object><Key>test.jpeg</Key><Location>peter-cq-1251704708.cos.ap-chongqing.myqcloud.com/test.jpeg</Location><Format>png</Format><Md5>eb501719fb03eeaf162f81adb32f56dc</Md5><Width>1080</Width><Height>971</Height><Size>698349</Size><Quality>80</Quality><FrameCount>1</FrameCount><BitDepth>8</BitDepth><VerticalDpi>37</VerticalDpi><HorizontalDpi>37</HorizontalDpi><ETag>"eb501719fb03eeaf162f81adb32f56dc"</ETag></Object></ProcessResults><ImgTargetRecResult><FaceDetailInfos><State>Success</State><FaceDetailInfo><X>219</X><Y>89</Y><Width>520</Width><Height>748</Height></FaceDetailInfo></FaceDetailInfos><CarDetailInfos><State>Failed</State><ErrorCode>NoResult</ErrorCode><ErrorMsg>can't rec enable info.</ErrorMsg></CarDetailInfos><BodyDetailInfos><State>Success</State><BodyDetailInfo><X>1</X><Y>15</Y><Width>1071</Width><Height>949</Height></BodyDetailInfo></BodyDetailInfos><PlateDetailInfos><State>Failed</State><ErrorCode>NoResult</ErrorCode><ErrorMsg>can't rec enable info.</ErrorMsg></PlateDetailInfos></ImgTargetRecResult></UploadResult>
具体的数据内容如下:
节点名称(关键字) | 父节点 | 描述 | 类型 |
UploadResult | 无 | 保存结果的容器。 | Container |
OriginalInfo | UploadResult | 原图的信息,具体信息可参考。 | Container |
ProcessResults | UploadResult | 结果图的信息。 | Container |
ImgTargetRecResult | UploadResult | 识别的结果信息。 | Container |
OriginalInfo 节点的内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
Key | OriginalInfo | 原图文件名。 | String |
Location | OriginalInfo | 图片路径。 | String |
ImageInfo | OriginalInfo | 原图图片信息。 | Container |
ETag | OriginalInfo | 原图 ETag 信息。(若处理结果图覆盖原图则为结果图 ETag 信息) | String |
ImageInfo 节点的内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
Format | ImageInfo | 图片格式。 | String |
Width | ImageInfo | 图片宽度。 | Int |
Height | ImageInfo | 图片高度。 | Int |
Quality | ImageInfo | 图片质量。 | Int |
Ave | ImageInfo | 图片主色调,格式为:0xRRGGBB (RR、GG、BB都是十六进制数,表示红、绿、蓝三种颜色) | String |
Orientation | ImageInfo | 图片旋转角度,取值为1-8的整数: 1:旋转0° 2:水平翻转 3:旋转180° 4:垂直翻转 5:顺时针旋转90°+水平翻转 6:顺时针旋转90° 7:顺时针旋转90°+垂直翻转 8:逆时针旋转90° | Int |
FrameCount | ImageInfo | 图片的帧数。静态图为1,动图为对应的帧数。 | Int |
BitDepth | ImageInfo | 图片的位深。 | Int |
VerticalDpi | ImageInfo | 图片的垂直DPI。 | Int |
HorizontalDpi | ImageInfo | 图片的水平DPI。 | Int |
Md5 | ImageInfo | 图片的Md5值。 | String |
ProcessResults 节点的内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
Object | ProcessResults | 每一个图片处理结果。 | Container |
Object 节点的内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
Key | Object | 文件名。 | String |
Location | Object | 图片路径。 | String |
Format | Object | 图片格式。 | String |
Width | Object | 图片宽度。 | Int |
Height | Object | 图片高度。 | Int |
Size | Object | 图片大小。 | Int |
Quality | Object | 图片质量。 | Int |
ETag | Object | 处理结果图 ETag 信息。 | String |
FrameCount | Object | 图片的帧数。静态图为1,动图为对应的帧数。 | Int |
BitDepth | Object | 图片的位深。 | Int |
VerticalDpi | Object | 图片的垂直DPI。 | Int |
HorizontalDpi | Object | 图片的水平DPI。 | Int |
Md5 | Object | 图片的Md5值。 | String |
ImgTargetRecResult节点的内容:
节点名称(关键字) | 父节点 | 描述 | 类型 |
FaceDetailInfos | ImgTargetRecResult | 人脸识别的坐标信息,仅在 detect-type 包含 face 时返回。 | Container |
CarDetailInfos | ImgTargetRecResult | 车辆识别的坐标信息,仅在 detect-type 包含 car 时返回。 | Container |
BodyDetailInfos | ImgTargetRecResult | 人体识别的坐标信息,仅在 detect-type 包含 body 时返回。 | Container |
PlateDetailInfos | ImgTargetRecResult | 车牌识别的坐标信息,仅在 detect-type 包含 plate 时返回。 | Container |
说明:
一张图最多可以检测100个结果(所有目标总和)。
FaceDetailInfos、CarDetailInfos、BodyDetailInfos、PlateDetailInfos节点详情:
节点名称(关键字) | 父节点 | 描述 | 类型 |
FaceDetailInfo | FaceDetailInfos | 单个人脸坐标信息。 | Container |
CarDetailInfo | CarDetailInfos | 单个车辆坐标信息。 | Container |
BodyDetailInfo | BodyDetailInfos | 单个人体坐标信息。 | Container |
PlateDetailInfo | PlateDetailInfos | 单个车牌坐标信息。 | Container |
State | FaceDetailInfos、CarDetailInfos、BodyDetailInfos、PlateDetailInfos | 单个类型的识别状态:Sucess(识别到目标),Failed(未识别到目标)。 | String |
FaceDetailInfo、CarDetailInfo、BodyDetailInfo、PlateDetailInfo节点详情:
节点名称(关键字) | 描述 | 类型 |
X | 识别框左上角 X 轴坐标。 | int |
Y | 识别框左上角 Y 轴坐标。 | int |
Width | 识别框宽度值。 | int |
Height | 识别框高度值。 | int |
ErrorCode | 识别状态异常码,仅在 State 为 Failed 时返回。 | String |
ErrorMsg | 识别状态异常文字描述,仅在 State 为 Failed 时返回。 | String |
错误码
实际案例
请求
POST /car.jpeg?image_process HTTP/1.1Host: examplebucket-1250000000.cos.ap-chengdu.myqcloud.comDate: Wed,18 Jan 2017 16:17:03 GMTAuthorization: Auth StringPic-Operations: {"is_pic_info":1, "rules":[{"fileid":"cover_test.jpeg","rule":"ci-process=ImageTargetRec&detect-type=car,face,plate,body&cover=1"}]}Content-Length: 414641
响应
HTTP/1.1 200 OKContent-Type: application/xmlContent-Length: 414641Date: Thu, 15 Jun 2017 12:37:29 GMTServer: tencent-imagex-ci-request-id: NTk0MjdmODlfMjQ4OGY3XzYzYzhf****<UploadResult><OriginalInfo><Key>car.jpeg</Key><Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/car.jpeg</Location><ImageInfo><Md5>ed874e261c9c82a2dadff9252c11e5ae</Md5><Format>JPEG</Format><Width>1080</Width><Height>971</Height><Quality>100</Quality><Ave>0x836b53</Ave><FrameCount>1</FrameCount><BitDepth>8</BitDepth><VerticalDpi>37</VerticalDpi><HorizontalDpi>37</HorizontalDpi></ImageInfo><ETag>"ed874e261c9c82a2dadff9252c11e5ae"</ETag></OriginalInfo><ProcessResults><Object><Key>cover_test.jpeg</Key><Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/cover_test.jpeg</Location><Format>png</Format><Md5>eb501719fb03eeaf162f81adb32f56dc</Md5><Width>1080</Width><Height>971</Height><Size>698349</Size><Quality>80</Quality><FrameCount>1</FrameCount><BitDepth>8</BitDepth><VerticalDpi>37</VerticalDpi><HorizontalDpi>37</HorizontalDpi><ETag>"eb501719fb03eeaf162f81adb32f56dc"</ETag></Object></ProcessResults><ImgTargetRecResult><FaceDetailInfos><State>Success</State><FaceDetailInfo><X>219</X><Y>89</Y><Width>520</Width><Height>748</Height></FaceDetailInfo></FaceDetailInfos><CarDetailInfos><State>Failed</State><ErrorCode>NoResult</ErrorCode><ErrorMsg>can't rec enable info.</ErrorMsg></CarDetailInfos><BodyDetailInfos><State>Success</State><BodyDetailInfo><X>1</X><Y>15</Y><Width>1071</Width><Height>949</Height></BodyDetailInfo></BodyDetailInfos><PlateDetailInfos><State>Failed</State><ErrorCode>NoResult</ErrorCode><ErrorMsg>can't rec enable info.</ErrorMsg></PlateDetailInfos></ImgTargetRecResult></UploadResult>