# -*- coding: utf8 -*-
# Copyright (c) 2017-2021 THL A29 Limited, a Tencent company. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import warnings
from tencentcloud.common.abstract_model import AbstractModel
class Age(AbstractModel):
"""人体年龄信息。
AttributesType 不含 Age 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
"""
def __init__(self):
r"""
:param _Type: 人体年龄信息,返回值为以下集合中的一个{小孩,青年,中年,老年}。
:type Type: str
:param _Probability: Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:type Probability: float
"""
self._Type = None
self._Probability = None
@property
def Type(self):
"""人体年龄信息,返回值为以下集合中的一个{小孩,青年,中年,老年}。
:rtype: str
"""
return self._Type
@Type.setter
def Type(self, Type):
self._Type = Type
@property
def Probability(self):
"""Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:rtype: float
"""
return self._Probability
@Probability.setter
def Probability(self, Probability):
self._Probability = Probability
def _deserialize(self, params):
self._Type = params.get("Type")
self._Probability = params.get("Probability")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class AttributesOptions(AbstractModel):
"""返回人体属性选项,此值不填则为不需要返回,可以选择的值为以下六个。
Age、Bag、Gender、Orientation、UpperBodyCloth、LowerBodyCloth,详细的解释请看对象描述
需注意本接口最多返回面积最大的 5 个人体属性信息,超过 5 个人体(第 6 个及以后的人体)的人体属性不具备参考意义。
"""
def __init__(self):
r"""
:param _Age: 返回年龄信息
:type Age: bool
:param _Bag: 返回随身挎包信息
:type Bag: bool
:param _Gender: 返回性别信息
:type Gender: bool
:param _Orientation: 返回朝向信息
:type Orientation: bool
:param _UpperBodyCloth: 返回上装信息
:type UpperBodyCloth: bool
:param _LowerBodyCloth: 返回下装信息
:type LowerBodyCloth: bool
"""
self._Age = None
self._Bag = None
self._Gender = None
self._Orientation = None
self._UpperBodyCloth = None
self._LowerBodyCloth = None
@property
def Age(self):
"""返回年龄信息
:rtype: bool
"""
return self._Age
@Age.setter
def Age(self, Age):
self._Age = Age
@property
def Bag(self):
"""返回随身挎包信息
:rtype: bool
"""
return self._Bag
@Bag.setter
def Bag(self, Bag):
self._Bag = Bag
@property
def Gender(self):
"""返回性别信息
:rtype: bool
"""
return self._Gender
@Gender.setter
def Gender(self, Gender):
self._Gender = Gender
@property
def Orientation(self):
"""返回朝向信息
:rtype: bool
"""
return self._Orientation
@Orientation.setter
def Orientation(self, Orientation):
self._Orientation = Orientation
@property
def UpperBodyCloth(self):
"""返回上装信息
:rtype: bool
"""
return self._UpperBodyCloth
@UpperBodyCloth.setter
def UpperBodyCloth(self, UpperBodyCloth):
self._UpperBodyCloth = UpperBodyCloth
@property
def LowerBodyCloth(self):
"""返回下装信息
:rtype: bool
"""
return self._LowerBodyCloth
@LowerBodyCloth.setter
def LowerBodyCloth(self, LowerBodyCloth):
self._LowerBodyCloth = LowerBodyCloth
def _deserialize(self, params):
self._Age = params.get("Age")
self._Bag = params.get("Bag")
self._Gender = params.get("Gender")
self._Orientation = params.get("Orientation")
self._UpperBodyCloth = params.get("UpperBodyCloth")
self._LowerBodyCloth = params.get("LowerBodyCloth")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class Bag(AbstractModel):
"""人体是否挎包。
AttributesType 不含 Bag 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
"""
def __init__(self):
r"""
:param _Type: 挎包信息,返回值为以下集合中的一个{双肩包, 斜挎包, 手拎包, 无包}。
:type Type: str
:param _Probability: Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:type Probability: float
"""
self._Type = None
self._Probability = None
@property
def Type(self):
"""挎包信息,返回值为以下集合中的一个{双肩包, 斜挎包, 手拎包, 无包}。
:rtype: str
"""
return self._Type
@Type.setter
def Type(self, Type):
self._Type = Type
@property
def Probability(self):
"""Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:rtype: float
"""
return self._Probability
@Probability.setter
def Probability(self, Probability):
self._Probability = Probability
def _deserialize(self, params):
self._Type = params.get("Type")
self._Probability = params.get("Probability")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class BodyAttributeInfo(AbstractModel):
"""图中检测出的人体属性信息。
"""
def __init__(self):
r"""
:param _Age: 人体年龄信息。
AttributesType 不含 Age 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:type Age: :class:`tencentcloud.bda.v20200324.models.Age`
:param _Bag: 人体是否挎包。
AttributesType 不含 Bag 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:type Bag: :class:`tencentcloud.bda.v20200324.models.Bag`
:param _Gender: 人体性别信息。
AttributesType 不含 Gender 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:type Gender: :class:`tencentcloud.bda.v20200324.models.Gender`
:param _Orientation: 人体朝向信息。
AttributesType 不含 UpperBodyCloth 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:type Orientation: :class:`tencentcloud.bda.v20200324.models.Orientation`
:param _UpperBodyCloth: 人体上衣属性信息。
AttributesType 不含 Orientation 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:type UpperBodyCloth: :class:`tencentcloud.bda.v20200324.models.UpperBodyCloth`
:param _LowerBodyCloth: 人体下衣属性信息。
AttributesType 不含 LowerBodyCloth 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:type LowerBodyCloth: :class:`tencentcloud.bda.v20200324.models.LowerBodyCloth`
"""
self._Age = None
self._Bag = None
self._Gender = None
self._Orientation = None
self._UpperBodyCloth = None
self._LowerBodyCloth = None
@property
def Age(self):
"""人体年龄信息。
AttributesType 不含 Age 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: :class:`tencentcloud.bda.v20200324.models.Age`
"""
return self._Age
@Age.setter
def Age(self, Age):
self._Age = Age
@property
def Bag(self):
"""人体是否挎包。
AttributesType 不含 Bag 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: :class:`tencentcloud.bda.v20200324.models.Bag`
"""
return self._Bag
@Bag.setter
def Bag(self, Bag):
self._Bag = Bag
@property
def Gender(self):
"""人体性别信息。
AttributesType 不含 Gender 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: :class:`tencentcloud.bda.v20200324.models.Gender`
"""
return self._Gender
@Gender.setter
def Gender(self, Gender):
self._Gender = Gender
@property
def Orientation(self):
"""人体朝向信息。
AttributesType 不含 UpperBodyCloth 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: :class:`tencentcloud.bda.v20200324.models.Orientation`
"""
return self._Orientation
@Orientation.setter
def Orientation(self, Orientation):
self._Orientation = Orientation
@property
def UpperBodyCloth(self):
"""人体上衣属性信息。
AttributesType 不含 Orientation 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: :class:`tencentcloud.bda.v20200324.models.UpperBodyCloth`
"""
return self._UpperBodyCloth
@UpperBodyCloth.setter
def UpperBodyCloth(self, UpperBodyCloth):
self._UpperBodyCloth = UpperBodyCloth
@property
def LowerBodyCloth(self):
"""人体下衣属性信息。
AttributesType 不含 LowerBodyCloth 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: :class:`tencentcloud.bda.v20200324.models.LowerBodyCloth`
"""
return self._LowerBodyCloth
@LowerBodyCloth.setter
def LowerBodyCloth(self, LowerBodyCloth):
self._LowerBodyCloth = LowerBodyCloth
def _deserialize(self, params):
if params.get("Age") is not None:
self._Age = Age()
self._Age._deserialize(params.get("Age"))
if params.get("Bag") is not None:
self._Bag = Bag()
self._Bag._deserialize(params.get("Bag"))
if params.get("Gender") is not None:
self._Gender = Gender()
self._Gender._deserialize(params.get("Gender"))
if params.get("Orientation") is not None:
self._Orientation = Orientation()
self._Orientation._deserialize(params.get("Orientation"))
if params.get("UpperBodyCloth") is not None:
self._UpperBodyCloth = UpperBodyCloth()
self._UpperBodyCloth._deserialize(params.get("UpperBodyCloth"))
if params.get("LowerBodyCloth") is not None:
self._LowerBodyCloth = LowerBodyCloth()
self._LowerBodyCloth._deserialize(params.get("LowerBodyCloth"))
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class BodyDetectResult(AbstractModel):
"""图中检测出来的人体框。
"""
def __init__(self):
r"""
:param _Confidence: 检测出的人体置信度。
误识率百分之十对应的阈值是0.14;误识率百分之五对应的阈值是0.32;误识率百分之二对应的阈值是0.62;误识率百分之一对应的阈值是0.81。
通常情况建议使用阈值0.32,可适用大多数情况。
:type Confidence: float
:param _BodyRect: 图中检测出来的人体框
:type BodyRect: :class:`tencentcloud.bda.v20200324.models.BodyRect`
:param _BodyAttributeInfo: 图中检测出的人体属性信息。
:type BodyAttributeInfo: :class:`tencentcloud.bda.v20200324.models.BodyAttributeInfo`
"""
self._Confidence = None
self._BodyRect = None
self._BodyAttributeInfo = None
@property
def Confidence(self):
"""检测出的人体置信度。
误识率百分之十对应的阈值是0.14;误识率百分之五对应的阈值是0.32;误识率百分之二对应的阈值是0.62;误识率百分之一对应的阈值是0.81。
通常情况建议使用阈值0.32,可适用大多数情况。
:rtype: float
"""
return self._Confidence
@Confidence.setter
def Confidence(self, Confidence):
self._Confidence = Confidence
@property
def BodyRect(self):
"""图中检测出来的人体框
:rtype: :class:`tencentcloud.bda.v20200324.models.BodyRect`
"""
return self._BodyRect
@BodyRect.setter
def BodyRect(self, BodyRect):
self._BodyRect = BodyRect
@property
def BodyAttributeInfo(self):
"""图中检测出的人体属性信息。
:rtype: :class:`tencentcloud.bda.v20200324.models.BodyAttributeInfo`
"""
return self._BodyAttributeInfo
@BodyAttributeInfo.setter
def BodyAttributeInfo(self, BodyAttributeInfo):
self._BodyAttributeInfo = BodyAttributeInfo
def _deserialize(self, params):
self._Confidence = params.get("Confidence")
if params.get("BodyRect") is not None:
self._BodyRect = BodyRect()
self._BodyRect._deserialize(params.get("BodyRect"))
if params.get("BodyAttributeInfo") is not None:
self._BodyAttributeInfo = BodyAttributeInfo()
self._BodyAttributeInfo._deserialize(params.get("BodyAttributeInfo"))
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class BodyJointsResult(AbstractModel):
"""人体框和人体关键点信息。
"""
def __init__(self):
r"""
:param _BoundBox: 图中检测出来的人体框。
:type BoundBox: :class:`tencentcloud.bda.v20200324.models.BoundRect`
:param _BodyJoints: 14个人体关键点的坐标,人体关键点详见KeyPointInfo。
:type BodyJoints: list of KeyPointInfo
:param _Confidence: 检测出的人体置信度,0-1之间,数值越高越准确。
:type Confidence: float
"""
self._BoundBox = None
self._BodyJoints = None
self._Confidence = None
@property
def BoundBox(self):
"""图中检测出来的人体框。
:rtype: :class:`tencentcloud.bda.v20200324.models.BoundRect`
"""
return self._BoundBox
@BoundBox.setter
def BoundBox(self, BoundBox):
self._BoundBox = BoundBox
@property
def BodyJoints(self):
"""14个人体关键点的坐标,人体关键点详见KeyPointInfo。
:rtype: list of KeyPointInfo
"""
return self._BodyJoints
@BodyJoints.setter
def BodyJoints(self, BodyJoints):
self._BodyJoints = BodyJoints
@property
def Confidence(self):
"""检测出的人体置信度,0-1之间,数值越高越准确。
:rtype: float
"""
return self._Confidence
@Confidence.setter
def Confidence(self, Confidence):
self._Confidence = Confidence
def _deserialize(self, params):
if params.get("BoundBox") is not None:
self._BoundBox = BoundRect()
self._BoundBox._deserialize(params.get("BoundBox"))
if params.get("BodyJoints") is not None:
self._BodyJoints = []
for item in params.get("BodyJoints"):
obj = KeyPointInfo()
obj._deserialize(item)
self._BodyJoints.append(obj)
self._Confidence = params.get("Confidence")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class BodyRect(AbstractModel):
"""人体框
"""
def __init__(self):
r"""
:param _X: 人体框左上角横坐标。
:type X: int
:param _Y: 人体框左上角纵坐标。
:type Y: int
:param _Width: 人体宽度。
:type Width: int
:param _Height: 人体高度。
:type Height: int
"""
self._X = None
self._Y = None
self._Width = None
self._Height = None
@property
def X(self):
"""人体框左上角横坐标。
:rtype: int
"""
return self._X
@X.setter
def X(self, X):
self._X = X
@property
def Y(self):
"""人体框左上角纵坐标。
:rtype: int
"""
return self._Y
@Y.setter
def Y(self, Y):
self._Y = Y
@property
def Width(self):
"""人体宽度。
:rtype: int
"""
return self._Width
@Width.setter
def Width(self, Width):
self._Width = Width
@property
def Height(self):
"""人体高度。
:rtype: int
"""
return self._Height
@Height.setter
def Height(self, Height):
self._Height = Height
def _deserialize(self, params):
self._X = params.get("X")
self._Y = params.get("Y")
self._Width = params.get("Width")
self._Height = params.get("Height")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class BoundRect(AbstractModel):
"""人体框
"""
def __init__(self):
r"""
:param _X: 人体框左上角横坐标。
:type X: int
:param _Y: 人体框左上角纵坐标。
:type Y: int
:param _Width: 人体宽度。
:type Width: int
:param _Height: 人体高度。
:type Height: int
"""
self._X = None
self._Y = None
self._Width = None
self._Height = None
@property
def X(self):
"""人体框左上角横坐标。
:rtype: int
"""
return self._X
@X.setter
def X(self, X):
self._X = X
@property
def Y(self):
"""人体框左上角纵坐标。
:rtype: int
"""
return self._Y
@Y.setter
def Y(self, Y):
self._Y = Y
@property
def Width(self):
"""人体宽度。
:rtype: int
"""
return self._Width
@Width.setter
def Width(self, Width):
self._Width = Width
@property
def Height(self):
"""人体高度。
:rtype: int
"""
return self._Height
@Height.setter
def Height(self, Height):
self._Height = Height
def _deserialize(self, params):
self._X = params.get("X")
self._Y = params.get("Y")
self._Width = params.get("Width")
self._Height = params.get("Height")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class Candidate(AbstractModel):
"""识别出的最相似候选人。
"""
def __init__(self):
r"""
:param _PersonId: 人员ID。
:type PersonId: str
:param _TraceId: 人体动作轨迹ID。
:type TraceId: str
:param _Score: 候选者的匹配得分。
十万人体库下,误识率百分之五对应的分数为70分;误识率百分之二对应的分数为80分;误识率百分之一对应的分数为90分。
二十万人体库下,误识率百分之五对应的分数为80分;误识率百分之二对应的分数为90分;误识率百分之一对应的分数为95分。
通常情况建议使用分数80分(保召回)。若希望获得较高精度,建议使用分数90分(保准确)。
:type Score: float
"""
self._PersonId = None
self._TraceId = None
self._Score = None
@property
def PersonId(self):
"""人员ID。
:rtype: str
"""
return self._PersonId
@PersonId.setter
def PersonId(self, PersonId):
self._PersonId = PersonId
@property
def TraceId(self):
"""人体动作轨迹ID。
:rtype: str
"""
return self._TraceId
@TraceId.setter
def TraceId(self, TraceId):
self._TraceId = TraceId
@property
def Score(self):
"""候选者的匹配得分。
十万人体库下,误识率百分之五对应的分数为70分;误识率百分之二对应的分数为80分;误识率百分之一对应的分数为90分。
二十万人体库下,误识率百分之五对应的分数为80分;误识率百分之二对应的分数为90分;误识率百分之一对应的分数为95分。
通常情况建议使用分数80分(保召回)。若希望获得较高精度,建议使用分数90分(保准确)。
:rtype: float
"""
return self._Score
@Score.setter
def Score(self, Score):
self._Score = Score
def _deserialize(self, params):
self._PersonId = params.get("PersonId")
self._TraceId = params.get("TraceId")
self._Score = params.get("Score")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class CreateGroupRequest(AbstractModel):
"""CreateGroup请求参数结构体
"""
def __init__(self):
r"""
:param _GroupName: 人体库名称,[1,60]个字符,可修改,不可重复。
:type GroupName: str
:param _GroupId: 人体库 ID,不可修改,不可重复。支持英文、数字、-%@#&_,长度限制64B。
:type GroupId: str
:param _Tag: 人体库信息备注,[0,40]个字符。
:type Tag: str
:param _BodyModelVersion: 人体识别所用的算法模型版本。
目前入参仅支持 “1.0”1个输入。 默认为"1.0"。
不同算法模型版本对应的人体识别算法不同,新版本的整体效果会优于旧版本,后续我们将推出更新版本。
:type BodyModelVersion: str
"""
self._GroupName = None
self._GroupId = None
self._Tag = None
self._BodyModelVersion = None
@property
def GroupName(self):
"""人体库名称,[1,60]个字符,可修改,不可重复。
:rtype: str
"""
return self._GroupName
@GroupName.setter
def GroupName(self, GroupName):
self._GroupName = GroupName
@property
def GroupId(self):
"""人体库 ID,不可修改,不可重复。支持英文、数字、-%@#&_,长度限制64B。
:rtype: str
"""
return self._GroupId
@GroupId.setter
def GroupId(self, GroupId):
self._GroupId = GroupId
@property
def Tag(self):
"""人体库信息备注,[0,40]个字符。
:rtype: str
"""
return self._Tag
@Tag.setter
def Tag(self, Tag):
self._Tag = Tag
@property
def BodyModelVersion(self):
"""人体识别所用的算法模型版本。
目前入参仅支持 “1.0”1个输入。 默认为"1.0"。
不同算法模型版本对应的人体识别算法不同,新版本的整体效果会优于旧版本,后续我们将推出更新版本。
:rtype: str
"""
return self._BodyModelVersion
@BodyModelVersion.setter
def BodyModelVersion(self, BodyModelVersion):
self._BodyModelVersion = BodyModelVersion
def _deserialize(self, params):
self._GroupName = params.get("GroupName")
self._GroupId = params.get("GroupId")
self._Tag = params.get("Tag")
self._BodyModelVersion = params.get("BodyModelVersion")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class CreateGroupResponse(AbstractModel):
"""CreateGroup返回参数结构体
"""
def __init__(self):
r"""
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._RequestId = None
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._RequestId = params.get("RequestId")
class CreatePersonRequest(AbstractModel):
"""CreatePerson请求参数结构体
"""
def __init__(self):
r"""
:param _GroupId: 待加入的人员库ID。
:type GroupId: str
:param _PersonName: 人员名称。[1,60]个字符,可修改,可重复。
:type PersonName: str
:param _PersonId: 人员ID,单个腾讯云账号下不可修改,不可重复。
支持英文、数字、-%@#&_,,长度限制64B。
:type PersonId: str
:param _Trace: 人体动作轨迹信息。
:type Trace: :class:`tencentcloud.bda.v20200324.models.Trace`
"""
self._GroupId = None
self._PersonName = None
self._PersonId = None
self._Trace = None
@property
def GroupId(self):
"""待加入的人员库ID。
:rtype: str
"""
return self._GroupId
@GroupId.setter
def GroupId(self, GroupId):
self._GroupId = GroupId
@property
def PersonName(self):
"""人员名称。[1,60]个字符,可修改,可重复。
:rtype: str
"""
return self._PersonName
@PersonName.setter
def PersonName(self, PersonName):
self._PersonName = PersonName
@property
def PersonId(self):
"""人员ID,单个腾讯云账号下不可修改,不可重复。
支持英文、数字、-%@#&_,,长度限制64B。
:rtype: str
"""
return self._PersonId
@PersonId.setter
def PersonId(self, PersonId):
self._PersonId = PersonId
@property
def Trace(self):
"""人体动作轨迹信息。
:rtype: :class:`tencentcloud.bda.v20200324.models.Trace`
"""
return self._Trace
@Trace.setter
def Trace(self, Trace):
self._Trace = Trace
def _deserialize(self, params):
self._GroupId = params.get("GroupId")
self._PersonName = params.get("PersonName")
self._PersonId = params.get("PersonId")
if params.get("Trace") is not None:
self._Trace = Trace()
self._Trace._deserialize(params.get("Trace"))
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class CreatePersonResponse(AbstractModel):
"""CreatePerson返回参数结构体
"""
def __init__(self):
r"""
:param _TraceId: 人员动作轨迹唯一标识。
:type TraceId: str
:param _BodyModelVersion: 人体识别所用的算法模型版本。
:type BodyModelVersion: str
:param _InputRetCode: 输入的人体动作轨迹图片中的合法性校验结果。
只有为0时结果才有意义。
-1001: 输入图片不合法。-1002: 输入图片不能构成动作轨迹。
:type InputRetCode: int
:param _InputRetCodeDetails: 输入的人体动作轨迹图片中的合法性校验结果详情。
-1101:图片无效,-1102:url不合法。-1103:图片过大。-1104:图片下载失败。-1105:图片解码失败。-1109:图片分辨率过高。-2023:动作轨迹中有非同人图片。-2024: 动作轨迹提取失败。-2025: 人体检测失败。
RetCode 的顺序和入参中Images 或 Urls 的顺序一致。
:type InputRetCodeDetails: list of int
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._TraceId = None
self._BodyModelVersion = None
self._InputRetCode = None
self._InputRetCodeDetails = None
self._RequestId = None
@property
def TraceId(self):
"""人员动作轨迹唯一标识。
:rtype: str
"""
return self._TraceId
@TraceId.setter
def TraceId(self, TraceId):
self._TraceId = TraceId
@property
def BodyModelVersion(self):
"""人体识别所用的算法模型版本。
:rtype: str
"""
return self._BodyModelVersion
@BodyModelVersion.setter
def BodyModelVersion(self, BodyModelVersion):
self._BodyModelVersion = BodyModelVersion
@property
def InputRetCode(self):
"""输入的人体动作轨迹图片中的合法性校验结果。
只有为0时结果才有意义。
-1001: 输入图片不合法。-1002: 输入图片不能构成动作轨迹。
:rtype: int
"""
return self._InputRetCode
@InputRetCode.setter
def InputRetCode(self, InputRetCode):
self._InputRetCode = InputRetCode
@property
def InputRetCodeDetails(self):
"""输入的人体动作轨迹图片中的合法性校验结果详情。
-1101:图片无效,-1102:url不合法。-1103:图片过大。-1104:图片下载失败。-1105:图片解码失败。-1109:图片分辨率过高。-2023:动作轨迹中有非同人图片。-2024: 动作轨迹提取失败。-2025: 人体检测失败。
RetCode 的顺序和入参中Images 或 Urls 的顺序一致。
:rtype: list of int
"""
return self._InputRetCodeDetails
@InputRetCodeDetails.setter
def InputRetCodeDetails(self, InputRetCodeDetails):
self._InputRetCodeDetails = InputRetCodeDetails
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._TraceId = params.get("TraceId")
self._BodyModelVersion = params.get("BodyModelVersion")
self._InputRetCode = params.get("InputRetCode")
self._InputRetCodeDetails = params.get("InputRetCodeDetails")
self._RequestId = params.get("RequestId")
class CreateSegmentationTaskRequest(AbstractModel):
"""CreateSegmentationTask请求参数结构体
"""
def __init__(self):
r"""
:param _VideoUrl: 需要分割的视频URL,可外网访问。
:type VideoUrl: str
:param _BackgroundImageUrl: 背景图片URL。
可以将视频背景替换为输入的图片。
如果不输入背景图片,则输出人像区域mask。
:type BackgroundImageUrl: str
:param _Config: 预留字段,后期用于展示更多识别信息。
:type Config: str
"""
self._VideoUrl = None
self._BackgroundImageUrl = None
self._Config = None
@property
def VideoUrl(self):
"""需要分割的视频URL,可外网访问。
:rtype: str
"""
return self._VideoUrl
@VideoUrl.setter
def VideoUrl(self, VideoUrl):
self._VideoUrl = VideoUrl
@property
def BackgroundImageUrl(self):
"""背景图片URL。
可以将视频背景替换为输入的图片。
如果不输入背景图片,则输出人像区域mask。
:rtype: str
"""
return self._BackgroundImageUrl
@BackgroundImageUrl.setter
def BackgroundImageUrl(self, BackgroundImageUrl):
self._BackgroundImageUrl = BackgroundImageUrl
@property
def Config(self):
"""预留字段,后期用于展示更多识别信息。
:rtype: str
"""
return self._Config
@Config.setter
def Config(self, Config):
self._Config = Config
def _deserialize(self, params):
self._VideoUrl = params.get("VideoUrl")
self._BackgroundImageUrl = params.get("BackgroundImageUrl")
self._Config = params.get("Config")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class CreateSegmentationTaskResponse(AbstractModel):
"""CreateSegmentationTask返回参数结构体
"""
def __init__(self):
r"""
:param _TaskID: 任务标识ID,可以用与追溯任务状态,查看任务结果
:type TaskID: str
:param _EstimatedProcessingTime: 预估处理时间,单位为秒
:type EstimatedProcessingTime: float
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._TaskID = None
self._EstimatedProcessingTime = None
self._RequestId = None
@property
def TaskID(self):
"""任务标识ID,可以用与追溯任务状态,查看任务结果
:rtype: str
"""
return self._TaskID
@TaskID.setter
def TaskID(self, TaskID):
self._TaskID = TaskID
@property
def EstimatedProcessingTime(self):
"""预估处理时间,单位为秒
:rtype: float
"""
return self._EstimatedProcessingTime
@EstimatedProcessingTime.setter
def EstimatedProcessingTime(self, EstimatedProcessingTime):
self._EstimatedProcessingTime = EstimatedProcessingTime
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._TaskID = params.get("TaskID")
self._EstimatedProcessingTime = params.get("EstimatedProcessingTime")
self._RequestId = params.get("RequestId")
class CreateTraceRequest(AbstractModel):
"""CreateTrace请求参数结构体
"""
def __init__(self):
r"""
:param _PersonId: 人员ID。
:type PersonId: str
:param _Trace: 人体动作轨迹信息。
:type Trace: :class:`tencentcloud.bda.v20200324.models.Trace`
"""
self._PersonId = None
self._Trace = None
@property
def PersonId(self):
"""人员ID。
:rtype: str
"""
return self._PersonId
@PersonId.setter
def PersonId(self, PersonId):
self._PersonId = PersonId
@property
def Trace(self):
"""人体动作轨迹信息。
:rtype: :class:`tencentcloud.bda.v20200324.models.Trace`
"""
return self._Trace
@Trace.setter
def Trace(self, Trace):
self._Trace = Trace
def _deserialize(self, params):
self._PersonId = params.get("PersonId")
if params.get("Trace") is not None:
self._Trace = Trace()
self._Trace._deserialize(params.get("Trace"))
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class CreateTraceResponse(AbstractModel):
"""CreateTrace返回参数结构体
"""
def __init__(self):
r"""
:param _TraceId: 人员动作轨迹唯一标识。
:type TraceId: str
:param _BodyModelVersion: 人体识别所用的算法模型版本。
:type BodyModelVersion: str
:param _InputRetCode: 输入的人体动作轨迹图片中的合法性校验结果。
只有为0时结果才有意义。
-1001: 输入图片不合法。-1002: 输入图片不能构成轨迹。
:type InputRetCode: int
:param _InputRetCodeDetails: 输入的人体动作轨迹图片中的合法性校验结果详情。
-1101:图片无效,-1102:url不合法。-1103:图片过大。-1104:图片下载失败。-1105:图片解码失败。-1109:图片分辨率过高。-2023:动作轨迹中有非同人图片。-2024: 动作轨迹提取失败。-2025: 人体检测失败。
:type InputRetCodeDetails: list of int
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._TraceId = None
self._BodyModelVersion = None
self._InputRetCode = None
self._InputRetCodeDetails = None
self._RequestId = None
@property
def TraceId(self):
"""人员动作轨迹唯一标识。
:rtype: str
"""
return self._TraceId
@TraceId.setter
def TraceId(self, TraceId):
self._TraceId = TraceId
@property
def BodyModelVersion(self):
"""人体识别所用的算法模型版本。
:rtype: str
"""
return self._BodyModelVersion
@BodyModelVersion.setter
def BodyModelVersion(self, BodyModelVersion):
self._BodyModelVersion = BodyModelVersion
@property
def InputRetCode(self):
"""输入的人体动作轨迹图片中的合法性校验结果。
只有为0时结果才有意义。
-1001: 输入图片不合法。-1002: 输入图片不能构成轨迹。
:rtype: int
"""
return self._InputRetCode
@InputRetCode.setter
def InputRetCode(self, InputRetCode):
self._InputRetCode = InputRetCode
@property
def InputRetCodeDetails(self):
"""输入的人体动作轨迹图片中的合法性校验结果详情。
-1101:图片无效,-1102:url不合法。-1103:图片过大。-1104:图片下载失败。-1105:图片解码失败。-1109:图片分辨率过高。-2023:动作轨迹中有非同人图片。-2024: 动作轨迹提取失败。-2025: 人体检测失败。
:rtype: list of int
"""
return self._InputRetCodeDetails
@InputRetCodeDetails.setter
def InputRetCodeDetails(self, InputRetCodeDetails):
self._InputRetCodeDetails = InputRetCodeDetails
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._TraceId = params.get("TraceId")
self._BodyModelVersion = params.get("BodyModelVersion")
self._InputRetCode = params.get("InputRetCode")
self._InputRetCodeDetails = params.get("InputRetCodeDetails")
self._RequestId = params.get("RequestId")
class DeleteGroupRequest(AbstractModel):
"""DeleteGroup请求参数结构体
"""
def __init__(self):
r"""
:param _GroupId: 人体库ID。
:type GroupId: str
"""
self._GroupId = None
@property
def GroupId(self):
"""人体库ID。
:rtype: str
"""
return self._GroupId
@GroupId.setter
def GroupId(self, GroupId):
self._GroupId = GroupId
def _deserialize(self, params):
self._GroupId = params.get("GroupId")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class DeleteGroupResponse(AbstractModel):
"""DeleteGroup返回参数结构体
"""
def __init__(self):
r"""
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._RequestId = None
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._RequestId = params.get("RequestId")
class DeletePersonRequest(AbstractModel):
"""DeletePerson请求参数结构体
"""
def __init__(self):
r"""
:param _PersonId: 人员ID。
:type PersonId: str
"""
self._PersonId = None
@property
def PersonId(self):
"""人员ID。
:rtype: str
"""
return self._PersonId
@PersonId.setter
def PersonId(self, PersonId):
self._PersonId = PersonId
def _deserialize(self, params):
self._PersonId = params.get("PersonId")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class DeletePersonResponse(AbstractModel):
"""DeletePerson返回参数结构体
"""
def __init__(self):
r"""
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._RequestId = None
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._RequestId = params.get("RequestId")
class DescribeSegmentationTaskRequest(AbstractModel):
"""DescribeSegmentationTask请求参数结构体
"""
def __init__(self):
r"""
:param _TaskID: 在提交分割任务成功时返回的任务标识ID。
:type TaskID: str
"""
self._TaskID = None
@property
def TaskID(self):
"""在提交分割任务成功时返回的任务标识ID。
:rtype: str
"""
return self._TaskID
@TaskID.setter
def TaskID(self, TaskID):
self._TaskID = TaskID
def _deserialize(self, params):
self._TaskID = params.get("TaskID")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class DescribeSegmentationTaskResponse(AbstractModel):
"""DescribeSegmentationTask返回参数结构体
"""
def __init__(self):
r"""
:param _TaskStatus: 当前任务状态:
QUEUING 排队中
PROCESSING 处理中
FINISHED 处理完成
:type TaskStatus: str
:param _ResultVideoUrl: 分割后视频URL, 存储于腾讯云COS
注意:此字段可能返回 null,表示取不到有效值。
:type ResultVideoUrl: str
:param _ResultVideoMD5: 分割后视频MD5,用于校验
注意:此字段可能返回 null,表示取不到有效值。
:type ResultVideoMD5: str
:param _VideoBasicInformation: 视频基本信息
注意:此字段可能返回 null,表示取不到有效值。
:type VideoBasicInformation: :class:`tencentcloud.bda.v20200324.models.VideoBasicInformation`
:param _ErrorMsg: 分割任务错误信息
注意:此字段可能返回 null,表示取不到有效值。
:type ErrorMsg: str
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._TaskStatus = None
self._ResultVideoUrl = None
self._ResultVideoMD5 = None
self._VideoBasicInformation = None
self._ErrorMsg = None
self._RequestId = None
@property
def TaskStatus(self):
"""当前任务状态:
QUEUING 排队中
PROCESSING 处理中
FINISHED 处理完成
:rtype: str
"""
return self._TaskStatus
@TaskStatus.setter
def TaskStatus(self, TaskStatus):
self._TaskStatus = TaskStatus
@property
def ResultVideoUrl(self):
"""分割后视频URL, 存储于腾讯云COS
注意:此字段可能返回 null,表示取不到有效值。
:rtype: str
"""
return self._ResultVideoUrl
@ResultVideoUrl.setter
def ResultVideoUrl(self, ResultVideoUrl):
self._ResultVideoUrl = ResultVideoUrl
@property
def ResultVideoMD5(self):
"""分割后视频MD5,用于校验
注意:此字段可能返回 null,表示取不到有效值。
:rtype: str
"""
return self._ResultVideoMD5
@ResultVideoMD5.setter
def ResultVideoMD5(self, ResultVideoMD5):
self._ResultVideoMD5 = ResultVideoMD5
@property
def VideoBasicInformation(self):
"""视频基本信息
注意:此字段可能返回 null,表示取不到有效值。
:rtype: :class:`tencentcloud.bda.v20200324.models.VideoBasicInformation`
"""
return self._VideoBasicInformation
@VideoBasicInformation.setter
def VideoBasicInformation(self, VideoBasicInformation):
self._VideoBasicInformation = VideoBasicInformation
@property
def ErrorMsg(self):
"""分割任务错误信息
注意:此字段可能返回 null,表示取不到有效值。
:rtype: str
"""
return self._ErrorMsg
@ErrorMsg.setter
def ErrorMsg(self, ErrorMsg):
self._ErrorMsg = ErrorMsg
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._TaskStatus = params.get("TaskStatus")
self._ResultVideoUrl = params.get("ResultVideoUrl")
self._ResultVideoMD5 = params.get("ResultVideoMD5")
if params.get("VideoBasicInformation") is not None:
self._VideoBasicInformation = VideoBasicInformation()
self._VideoBasicInformation._deserialize(params.get("VideoBasicInformation"))
self._ErrorMsg = params.get("ErrorMsg")
self._RequestId = params.get("RequestId")
class DetectBodyJointsRequest(AbstractModel):
"""DetectBodyJoints请求参数结构体
"""
def __init__(self):
r"""
:param _Image: 图片 base64 数据,base64 编码后大小不可超过5M。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:type Image: str
:param _Url: 图片的 Url 。对应图片 base64 编码后大小不可超过5M。
Url、Image必须提供一个,如果都提供,只使用 Url。
图片存储于腾讯云的Url可保障更高下载速度和稳定性,建议图片存储于腾讯云。
非腾讯云存储的Url速度和稳定性可能受一定影响。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:type Url: str
:param _LocalBodySwitch: 人体局部关键点识别,开启后对人体局部图(例如部分身体部位)进行关键点识别,输出人体关键点坐标,默认不开启
注意:若开启人体局部图片关键点识别,则BoundBox、Confidence返回为空。
:type LocalBodySwitch: bool
"""
self._Image = None
self._Url = None
self._LocalBodySwitch = None
@property
def Image(self):
"""图片 base64 数据,base64 编码后大小不可超过5M。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:rtype: str
"""
return self._Image
@Image.setter
def Image(self, Image):
self._Image = Image
@property
def Url(self):
"""图片的 Url 。对应图片 base64 编码后大小不可超过5M。
Url、Image必须提供一个,如果都提供,只使用 Url。
图片存储于腾讯云的Url可保障更高下载速度和稳定性,建议图片存储于腾讯云。
非腾讯云存储的Url速度和稳定性可能受一定影响。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:rtype: str
"""
return self._Url
@Url.setter
def Url(self, Url):
self._Url = Url
@property
def LocalBodySwitch(self):
"""人体局部关键点识别,开启后对人体局部图(例如部分身体部位)进行关键点识别,输出人体关键点坐标,默认不开启
注意:若开启人体局部图片关键点识别,则BoundBox、Confidence返回为空。
:rtype: bool
"""
return self._LocalBodySwitch
@LocalBodySwitch.setter
def LocalBodySwitch(self, LocalBodySwitch):
self._LocalBodySwitch = LocalBodySwitch
def _deserialize(self, params):
self._Image = params.get("Image")
self._Url = params.get("Url")
self._LocalBodySwitch = params.get("LocalBodySwitch")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class DetectBodyJointsResponse(AbstractModel):
"""DetectBodyJoints返回参数结构体
"""
def __init__(self):
r"""
:param _BodyJointsResults: 图中检测出的人体框和人体关键点, 包含14个人体关键点的坐标,建议根据人体框置信度筛选出合格的人体;
:type BodyJointsResults: list of BodyJointsResult
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._BodyJointsResults = None
self._RequestId = None
@property
def BodyJointsResults(self):
"""图中检测出的人体框和人体关键点, 包含14个人体关键点的坐标,建议根据人体框置信度筛选出合格的人体;
:rtype: list of BodyJointsResult
"""
return self._BodyJointsResults
@BodyJointsResults.setter
def BodyJointsResults(self, BodyJointsResults):
self._BodyJointsResults = BodyJointsResults
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
if params.get("BodyJointsResults") is not None:
self._BodyJointsResults = []
for item in params.get("BodyJointsResults"):
obj = BodyJointsResult()
obj._deserialize(item)
self._BodyJointsResults.append(obj)
self._RequestId = params.get("RequestId")
class DetectBodyRequest(AbstractModel):
"""DetectBody请求参数结构体
"""
def __init__(self):
r"""
:param _Image: 人体图片 Base64 数据。
图片 base64 编码后大小不可超过5M。
图片分辨率不得超过 1920 * 1080 。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:type Image: str
:param _MaxBodyNum: 最多检测的人体数目,默认值为1(仅检测图片中面积最大的那个人体); 最大值10 ,检测图片中面积最大的10个人体。
:type MaxBodyNum: int
:param _Url: 人体图片 Url 。
Url、Image必须提供一个,如果都提供,只使用 Url。
图片 base64 编码后大小不可超过5M。
图片分辨率不得超过 1920 * 1080 。
图片存储于腾讯云的Url可保障更高下载速度和稳定性,建议图片存储于腾讯云。
非腾讯云存储的Url速度和稳定性可能受一定影响。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:type Url: str
:param _AttributesOptions: 是否返回年龄、性别、朝向等属性。
可选项有 Age、Bag、Gender、UpperBodyCloth、LowerBodyCloth、Orientation。
如果此参数为空则为不需要返回。
需要将属性组成一个用逗号分隔的字符串,属性之间的顺序没有要求。
关于各属性的详细描述,参见下文出参。
最多返回面积最大的 5 个人体属性信息,超过 5 个人体(第 6 个及以后的人体)的 BodyAttributesInfo 不具备参考意义。
:type AttributesOptions: :class:`tencentcloud.bda.v20200324.models.AttributesOptions`
"""
self._Image = None
self._MaxBodyNum = None
self._Url = None
self._AttributesOptions = None
@property
def Image(self):
"""人体图片 Base64 数据。
图片 base64 编码后大小不可超过5M。
图片分辨率不得超过 1920 * 1080 。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:rtype: str
"""
return self._Image
@Image.setter
def Image(self, Image):
self._Image = Image
@property
def MaxBodyNum(self):
"""最多检测的人体数目,默认值为1(仅检测图片中面积最大的那个人体); 最大值10 ,检测图片中面积最大的10个人体。
:rtype: int
"""
return self._MaxBodyNum
@MaxBodyNum.setter
def MaxBodyNum(self, MaxBodyNum):
self._MaxBodyNum = MaxBodyNum
@property
def Url(self):
"""人体图片 Url 。
Url、Image必须提供一个,如果都提供,只使用 Url。
图片 base64 编码后大小不可超过5M。
图片分辨率不得超过 1920 * 1080 。
图片存储于腾讯云的Url可保障更高下载速度和稳定性,建议图片存储于腾讯云。
非腾讯云存储的Url速度和稳定性可能受一定影响。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:rtype: str
"""
return self._Url
@Url.setter
def Url(self, Url):
self._Url = Url
@property
def AttributesOptions(self):
"""是否返回年龄、性别、朝向等属性。
可选项有 Age、Bag、Gender、UpperBodyCloth、LowerBodyCloth、Orientation。
如果此参数为空则为不需要返回。
需要将属性组成一个用逗号分隔的字符串,属性之间的顺序没有要求。
关于各属性的详细描述,参见下文出参。
最多返回面积最大的 5 个人体属性信息,超过 5 个人体(第 6 个及以后的人体)的 BodyAttributesInfo 不具备参考意义。
:rtype: :class:`tencentcloud.bda.v20200324.models.AttributesOptions`
"""
return self._AttributesOptions
@AttributesOptions.setter
def AttributesOptions(self, AttributesOptions):
self._AttributesOptions = AttributesOptions
def _deserialize(self, params):
self._Image = params.get("Image")
self._MaxBodyNum = params.get("MaxBodyNum")
self._Url = params.get("Url")
if params.get("AttributesOptions") is not None:
self._AttributesOptions = AttributesOptions()
self._AttributesOptions._deserialize(params.get("AttributesOptions"))
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class DetectBodyResponse(AbstractModel):
"""DetectBody返回参数结构体
"""
def __init__(self):
r"""
:param _BodyDetectResults: 图中检测出来的人体框。
:type BodyDetectResults: list of BodyDetectResult
:param _BodyModelVersion: 人体识别所用的算法模型版本。
:type BodyModelVersion: str
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._BodyDetectResults = None
self._BodyModelVersion = None
self._RequestId = None
@property
def BodyDetectResults(self):
"""图中检测出来的人体框。
:rtype: list of BodyDetectResult
"""
return self._BodyDetectResults
@BodyDetectResults.setter
def BodyDetectResults(self, BodyDetectResults):
self._BodyDetectResults = BodyDetectResults
@property
def BodyModelVersion(self):
"""人体识别所用的算法模型版本。
:rtype: str
"""
return self._BodyModelVersion
@BodyModelVersion.setter
def BodyModelVersion(self, BodyModelVersion):
self._BodyModelVersion = BodyModelVersion
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
if params.get("BodyDetectResults") is not None:
self._BodyDetectResults = []
for item in params.get("BodyDetectResults"):
obj = BodyDetectResult()
obj._deserialize(item)
self._BodyDetectResults.append(obj)
self._BodyModelVersion = params.get("BodyModelVersion")
self._RequestId = params.get("RequestId")
class Gender(AbstractModel):
"""人体性别信息。
AttributesType 不含 Gender 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
"""
def __init__(self):
r"""
:param _Type: 性别信息,返回值为以下集合中的一个 {男性, 女性}
:type Type: str
:param _Probability: Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:type Probability: float
"""
self._Type = None
self._Probability = None
@property
def Type(self):
"""性别信息,返回值为以下集合中的一个 {男性, 女性}
:rtype: str
"""
return self._Type
@Type.setter
def Type(self, Type):
self._Type = Type
@property
def Probability(self):
"""Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:rtype: float
"""
return self._Probability
@Probability.setter
def Probability(self, Probability):
self._Probability = Probability
def _deserialize(self, params):
self._Type = params.get("Type")
self._Probability = params.get("Probability")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class GetGroupListRequest(AbstractModel):
"""GetGroupList请求参数结构体
"""
def __init__(self):
r"""
:param _Offset: 起始序号,默认值为0。
:type Offset: int
:param _Limit: 返回数量,默认值为10,最大值为1000。
:type Limit: int
"""
self._Offset = None
self._Limit = None
@property
def Offset(self):
"""起始序号,默认值为0。
:rtype: int
"""
return self._Offset
@Offset.setter
def Offset(self, Offset):
self._Offset = Offset
@property
def Limit(self):
"""返回数量,默认值为10,最大值为1000。
:rtype: int
"""
return self._Limit
@Limit.setter
def Limit(self, Limit):
self._Limit = Limit
def _deserialize(self, params):
self._Offset = params.get("Offset")
self._Limit = params.get("Limit")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class GetGroupListResponse(AbstractModel):
"""GetGroupList返回参数结构体
"""
def __init__(self):
r"""
:param _GroupInfos: 返回的人体库信息。
:type GroupInfos: list of GroupInfo
:param _GroupNum: 人体库总数量。
:type GroupNum: int
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._GroupInfos = None
self._GroupNum = None
self._RequestId = None
@property
def GroupInfos(self):
"""返回的人体库信息。
:rtype: list of GroupInfo
"""
return self._GroupInfos
@GroupInfos.setter
def GroupInfos(self, GroupInfos):
self._GroupInfos = GroupInfos
@property
def GroupNum(self):
"""人体库总数量。
:rtype: int
"""
return self._GroupNum
@GroupNum.setter
def GroupNum(self, GroupNum):
self._GroupNum = GroupNum
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
if params.get("GroupInfos") is not None:
self._GroupInfos = []
for item in params.get("GroupInfos"):
obj = GroupInfo()
obj._deserialize(item)
self._GroupInfos.append(obj)
self._GroupNum = params.get("GroupNum")
self._RequestId = params.get("RequestId")
class GetPersonListRequest(AbstractModel):
"""GetPersonList请求参数结构体
"""
def __init__(self):
r"""
:param _GroupId: 人体库ID。
:type GroupId: str
:param _Offset: 起始序号,默认值为0。
:type Offset: int
:param _Limit: 返回数量,默认值为10,最大值为1000。
:type Limit: int
"""
self._GroupId = None
self._Offset = None
self._Limit = None
@property
def GroupId(self):
"""人体库ID。
:rtype: str
"""
return self._GroupId
@GroupId.setter
def GroupId(self, GroupId):
self._GroupId = GroupId
@property
def Offset(self):
"""起始序号,默认值为0。
:rtype: int
"""
return self._Offset
@Offset.setter
def Offset(self, Offset):
self._Offset = Offset
@property
def Limit(self):
"""返回数量,默认值为10,最大值为1000。
:rtype: int
"""
return self._Limit
@Limit.setter
def Limit(self, Limit):
self._Limit = Limit
def _deserialize(self, params):
self._GroupId = params.get("GroupId")
self._Offset = params.get("Offset")
self._Limit = params.get("Limit")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class GetPersonListResponse(AbstractModel):
"""GetPersonList返回参数结构体
"""
def __init__(self):
r"""
:param _PersonInfos: 返回的人员信息。
:type PersonInfos: list of PersonInfo
:param _PersonNum: 该人体库的人员数量。
:type PersonNum: int
:param _BodyModelVersion: 人体识别所用的算法模型版本。
:type BodyModelVersion: str
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._PersonInfos = None
self._PersonNum = None
self._BodyModelVersion = None
self._RequestId = None
@property
def PersonInfos(self):
"""返回的人员信息。
:rtype: list of PersonInfo
"""
return self._PersonInfos
@PersonInfos.setter
def PersonInfos(self, PersonInfos):
self._PersonInfos = PersonInfos
@property
def PersonNum(self):
"""该人体库的人员数量。
:rtype: int
"""
return self._PersonNum
@PersonNum.setter
def PersonNum(self, PersonNum):
self._PersonNum = PersonNum
@property
def BodyModelVersion(self):
"""人体识别所用的算法模型版本。
:rtype: str
"""
return self._BodyModelVersion
@BodyModelVersion.setter
def BodyModelVersion(self, BodyModelVersion):
self._BodyModelVersion = BodyModelVersion
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
if params.get("PersonInfos") is not None:
self._PersonInfos = []
for item in params.get("PersonInfos"):
obj = PersonInfo()
obj._deserialize(item)
self._PersonInfos.append(obj)
self._PersonNum = params.get("PersonNum")
self._BodyModelVersion = params.get("BodyModelVersion")
self._RequestId = params.get("RequestId")
class GetSummaryInfoRequest(AbstractModel):
"""GetSummaryInfo请求参数结构体
"""
class GetSummaryInfoResponse(AbstractModel):
"""GetSummaryInfo返回参数结构体
"""
def __init__(self):
r"""
:param _GroupCount: 人体库总数量。
:type GroupCount: int
:param _PersonCount: 人员总数量
:type PersonCount: int
:param _TraceCount: 人员轨迹总数量
:type TraceCount: int
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._GroupCount = None
self._PersonCount = None
self._TraceCount = None
self._RequestId = None
@property
def GroupCount(self):
"""人体库总数量。
:rtype: int
"""
return self._GroupCount
@GroupCount.setter
def GroupCount(self, GroupCount):
self._GroupCount = GroupCount
@property
def PersonCount(self):
"""人员总数量
:rtype: int
"""
return self._PersonCount
@PersonCount.setter
def PersonCount(self, PersonCount):
self._PersonCount = PersonCount
@property
def TraceCount(self):
"""人员轨迹总数量
:rtype: int
"""
return self._TraceCount
@TraceCount.setter
def TraceCount(self, TraceCount):
self._TraceCount = TraceCount
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._GroupCount = params.get("GroupCount")
self._PersonCount = params.get("PersonCount")
self._TraceCount = params.get("TraceCount")
self._RequestId = params.get("RequestId")
class GroupInfo(AbstractModel):
"""返回的人员库信息。
"""
def __init__(self):
r"""
:param _GroupName: 人体库名称。
:type GroupName: str
:param _GroupId: 人体库ID。
:type GroupId: str
:param _Tag: 人体库信息备注。
:type Tag: str
:param _BodyModelVersion: 人体识别所用的算法模型版本。
:type BodyModelVersion: str
:param _CreationTimestamp: Group的创建时间和日期 CreationTimestamp。CreationTimestamp 的值是自 Unix 纪元时间到Group创建时间的毫秒数。
Unix 纪元时间是 1970 年 1 月 1 日星期四,协调世界时 (UTC) 。
:type CreationTimestamp: int
"""
self._GroupName = None
self._GroupId = None
self._Tag = None
self._BodyModelVersion = None
self._CreationTimestamp = None
@property
def GroupName(self):
"""人体库名称。
:rtype: str
"""
return self._GroupName
@GroupName.setter
def GroupName(self, GroupName):
self._GroupName = GroupName
@property
def GroupId(self):
"""人体库ID。
:rtype: str
"""
return self._GroupId
@GroupId.setter
def GroupId(self, GroupId):
self._GroupId = GroupId
@property
def Tag(self):
"""人体库信息备注。
:rtype: str
"""
return self._Tag
@Tag.setter
def Tag(self, Tag):
self._Tag = Tag
@property
def BodyModelVersion(self):
"""人体识别所用的算法模型版本。
:rtype: str
"""
return self._BodyModelVersion
@BodyModelVersion.setter
def BodyModelVersion(self, BodyModelVersion):
self._BodyModelVersion = BodyModelVersion
@property
def CreationTimestamp(self):
"""Group的创建时间和日期 CreationTimestamp。CreationTimestamp 的值是自 Unix 纪元时间到Group创建时间的毫秒数。
Unix 纪元时间是 1970 年 1 月 1 日星期四,协调世界时 (UTC) 。
:rtype: int
"""
return self._CreationTimestamp
@CreationTimestamp.setter
def CreationTimestamp(self, CreationTimestamp):
self._CreationTimestamp = CreationTimestamp
def _deserialize(self, params):
self._GroupName = params.get("GroupName")
self._GroupId = params.get("GroupId")
self._Tag = params.get("Tag")
self._BodyModelVersion = params.get("BodyModelVersion")
self._CreationTimestamp = params.get("CreationTimestamp")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class ImageRect(AbstractModel):
"""图像坐标信息。
"""
def __init__(self):
r"""
:param _X: 左上角横坐标。
:type X: int
:param _Y: 左上角纵坐标。
:type Y: int
:param _Width: 人体宽度。
:type Width: int
:param _Height: 人体高度。
:type Height: int
:param _Label: 分割选项名称。
:type Label: str
"""
self._X = None
self._Y = None
self._Width = None
self._Height = None
self._Label = None
@property
def X(self):
"""左上角横坐标。
:rtype: int
"""
return self._X
@X.setter
def X(self, X):
self._X = X
@property
def Y(self):
"""左上角纵坐标。
:rtype: int
"""
return self._Y
@Y.setter
def Y(self, Y):
self._Y = Y
@property
def Width(self):
"""人体宽度。
:rtype: int
"""
return self._Width
@Width.setter
def Width(self, Width):
self._Width = Width
@property
def Height(self):
"""人体高度。
:rtype: int
"""
return self._Height
@Height.setter
def Height(self, Height):
self._Height = Height
@property
def Label(self):
"""分割选项名称。
:rtype: str
"""
return self._Label
@Label.setter
def Label(self, Label):
self._Label = Label
def _deserialize(self, params):
self._X = params.get("X")
self._Y = params.get("Y")
self._Width = params.get("Width")
self._Height = params.get("Height")
self._Label = params.get("Label")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class KeyPointInfo(AbstractModel):
"""人体关键点信息
"""
def __init__(self):
r"""
:param _KeyPointType: 代表不同位置的人体关键点信息,返回值为以下集合中的一个 [头部,颈部,右肩,右肘,右腕,左肩,左肘,左腕,右髋,右膝,右踝,左髋,左膝,左踝]
:type KeyPointType: str
:param _X: 人体关键点横坐标
:type X: float
:param _Y: 人体关键点纵坐标
:type Y: float
:param _BodyScore: 关键点坐标置信度,分数取值在0-1之间,阈值建议为0.25,小于0.25认为在图中无人体关键点。
:type BodyScore: float
"""
self._KeyPointType = None
self._X = None
self._Y = None
self._BodyScore = None
@property
def KeyPointType(self):
"""代表不同位置的人体关键点信息,返回值为以下集合中的一个 [头部,颈部,右肩,右肘,右腕,左肩,左肘,左腕,右髋,右膝,右踝,左髋,左膝,左踝]
:rtype: str
"""
return self._KeyPointType
@KeyPointType.setter
def KeyPointType(self, KeyPointType):
self._KeyPointType = KeyPointType
@property
def X(self):
"""人体关键点横坐标
:rtype: float
"""
return self._X
@X.setter
def X(self, X):
self._X = X
@property
def Y(self):
"""人体关键点纵坐标
:rtype: float
"""
return self._Y
@Y.setter
def Y(self, Y):
self._Y = Y
@property
def BodyScore(self):
"""关键点坐标置信度,分数取值在0-1之间,阈值建议为0.25,小于0.25认为在图中无人体关键点。
:rtype: float
"""
return self._BodyScore
@BodyScore.setter
def BodyScore(self, BodyScore):
self._BodyScore = BodyScore
def _deserialize(self, params):
self._KeyPointType = params.get("KeyPointType")
self._X = params.get("X")
self._Y = params.get("Y")
self._BodyScore = params.get("BodyScore")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class LowerBodyCloth(AbstractModel):
"""下衣属性信息
"""
def __init__(self):
r"""
:param _Color: 下衣颜色信息。
:type Color: :class:`tencentcloud.bda.v20200324.models.LowerBodyClothColor`
:param _Length: 下衣长度信息 。
:type Length: :class:`tencentcloud.bda.v20200324.models.LowerBodyClothLength`
:param _Type: 下衣类型信息。
:type Type: :class:`tencentcloud.bda.v20200324.models.LowerBodyClothType`
"""
self._Color = None
self._Length = None
self._Type = None
@property
def Color(self):
"""下衣颜色信息。
:rtype: :class:`tencentcloud.bda.v20200324.models.LowerBodyClothColor`
"""
return self._Color
@Color.setter
def Color(self, Color):
self._Color = Color
@property
def Length(self):
"""下衣长度信息 。
:rtype: :class:`tencentcloud.bda.v20200324.models.LowerBodyClothLength`
"""
return self._Length
@Length.setter
def Length(self, Length):
self._Length = Length
@property
def Type(self):
"""下衣类型信息。
:rtype: :class:`tencentcloud.bda.v20200324.models.LowerBodyClothType`
"""
return self._Type
@Type.setter
def Type(self, Type):
self._Type = Type
def _deserialize(self, params):
if params.get("Color") is not None:
self._Color = LowerBodyClothColor()
self._Color._deserialize(params.get("Color"))
if params.get("Length") is not None:
self._Length = LowerBodyClothLength()
self._Length._deserialize(params.get("Length"))
if params.get("Type") is not None:
self._Type = LowerBodyClothType()
self._Type._deserialize(params.get("Type"))
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class LowerBodyClothColor(AbstractModel):
"""下衣颜色信息
"""
def __init__(self):
r"""
:param _Type: 下衣颜色信息,返回值为以下集合中的一个{ 黑色系, 灰白色系, 彩色} 。
:type Type: str
:param _Probability: Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:type Probability: float
"""
self._Type = None
self._Probability = None
@property
def Type(self):
"""下衣颜色信息,返回值为以下集合中的一个{ 黑色系, 灰白色系, 彩色} 。
:rtype: str
"""
return self._Type
@Type.setter
def Type(self, Type):
self._Type = Type
@property
def Probability(self):
"""Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:rtype: float
"""
return self._Probability
@Probability.setter
def Probability(self, Probability):
self._Probability = Probability
def _deserialize(self, params):
self._Type = params.get("Type")
self._Probability = params.get("Probability")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class LowerBodyClothLength(AbstractModel):
"""下衣长度信息
"""
def __init__(self):
r"""
:param _Type: 下衣长度信息,返回值为以下集合中的一个,{长, 短} 。
:type Type: str
:param _Probability: Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:type Probability: float
"""
self._Type = None
self._Probability = None
@property
def Type(self):
"""下衣长度信息,返回值为以下集合中的一个,{长, 短} 。
:rtype: str
"""
return self._Type
@Type.setter
def Type(self, Type):
self._Type = Type
@property
def Probability(self):
"""Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:rtype: float
"""
return self._Probability
@Probability.setter
def Probability(self, Probability):
self._Probability = Probability
def _deserialize(self, params):
self._Type = params.get("Type")
self._Probability = params.get("Probability")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class LowerBodyClothType(AbstractModel):
"""下衣类型信息
"""
def __init__(self):
r"""
:param _Type: 下衣类型,返回值为以下集合中的一个 {裤子,裙子} 。
:type Type: str
:param _Probability: Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:type Probability: float
"""
self._Type = None
self._Probability = None
@property
def Type(self):
"""下衣类型,返回值为以下集合中的一个 {裤子,裙子} 。
:rtype: str
"""
return self._Type
@Type.setter
def Type(self, Type):
self._Type = Type
@property
def Probability(self):
"""Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:rtype: float
"""
return self._Probability
@Probability.setter
def Probability(self, Probability):
self._Probability = Probability
def _deserialize(self, params):
self._Type = params.get("Type")
self._Probability = params.get("Probability")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class ModifyGroupRequest(AbstractModel):
"""ModifyGroup请求参数结构体
"""
def __init__(self):
r"""
:param _GroupId: 人体库ID。
:type GroupId: str
:param _GroupName: 人体库名称。
:type GroupName: str
:param _Tag: 人体库信息备注。
:type Tag: str
"""
self._GroupId = None
self._GroupName = None
self._Tag = None
@property
def GroupId(self):
"""人体库ID。
:rtype: str
"""
return self._GroupId
@GroupId.setter
def GroupId(self, GroupId):
self._GroupId = GroupId
@property
def GroupName(self):
"""人体库名称。
:rtype: str
"""
return self._GroupName
@GroupName.setter
def GroupName(self, GroupName):
self._GroupName = GroupName
@property
def Tag(self):
"""人体库信息备注。
:rtype: str
"""
return self._Tag
@Tag.setter
def Tag(self, Tag):
self._Tag = Tag
def _deserialize(self, params):
self._GroupId = params.get("GroupId")
self._GroupName = params.get("GroupName")
self._Tag = params.get("Tag")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class ModifyGroupResponse(AbstractModel):
"""ModifyGroup返回参数结构体
"""
def __init__(self):
r"""
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._RequestId = None
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._RequestId = params.get("RequestId")
class ModifyPersonInfoRequest(AbstractModel):
"""ModifyPersonInfo请求参数结构体
"""
def __init__(self):
r"""
:param _PersonId: 人员ID。
:type PersonId: str
:param _PersonName: 人员名称。
:type PersonName: str
"""
self._PersonId = None
self._PersonName = None
@property
def PersonId(self):
"""人员ID。
:rtype: str
"""
return self._PersonId
@PersonId.setter
def PersonId(self, PersonId):
self._PersonId = PersonId
@property
def PersonName(self):
"""人员名称。
:rtype: str
"""
return self._PersonName
@PersonName.setter
def PersonName(self, PersonName):
self._PersonName = PersonName
def _deserialize(self, params):
self._PersonId = params.get("PersonId")
self._PersonName = params.get("PersonName")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class ModifyPersonInfoResponse(AbstractModel):
"""ModifyPersonInfo返回参数结构体
"""
def __init__(self):
r"""
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._RequestId = None
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._RequestId = params.get("RequestId")
class Orientation(AbstractModel):
"""人体朝向信息。
AttributesType 不含 Orientation 或检测超过 5 个人体时,此参数仍返回,但不具备参考意义。
"""
def __init__(self):
r"""
:param _Type: 人体朝向信息,返回值为以下集合中的一个 {正向, 背向, 左, 右}。
:type Type: str
:param _Probability: Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:type Probability: float
"""
self._Type = None
self._Probability = None
@property
def Type(self):
"""人体朝向信息,返回值为以下集合中的一个 {正向, 背向, 左, 右}。
:rtype: str
"""
return self._Type
@Type.setter
def Type(self, Type):
self._Type = Type
@property
def Probability(self):
"""Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:rtype: float
"""
return self._Probability
@Probability.setter
def Probability(self, Probability):
self._Probability = Probability
def _deserialize(self, params):
self._Type = params.get("Type")
self._Probability = params.get("Probability")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class PersonInfo(AbstractModel):
"""人员信息。
"""
def __init__(self):
r"""
:param _PersonName: 人员名称。
:type PersonName: str
:param _PersonId: 人员ID。
:type PersonId: str
:param _TraceInfos: 包含的人体动作轨迹图片信息列表。
:type TraceInfos: list of TraceInfo
"""
self._PersonName = None
self._PersonId = None
self._TraceInfos = None
@property
def PersonName(self):
"""人员名称。
:rtype: str
"""
return self._PersonName
@PersonName.setter
def PersonName(self, PersonName):
self._PersonName = PersonName
@property
def PersonId(self):
"""人员ID。
:rtype: str
"""
return self._PersonId
@PersonId.setter
def PersonId(self, PersonId):
self._PersonId = PersonId
@property
def TraceInfos(self):
"""包含的人体动作轨迹图片信息列表。
:rtype: list of TraceInfo
"""
return self._TraceInfos
@TraceInfos.setter
def TraceInfos(self, TraceInfos):
self._TraceInfos = TraceInfos
def _deserialize(self, params):
self._PersonName = params.get("PersonName")
self._PersonId = params.get("PersonId")
if params.get("TraceInfos") is not None:
self._TraceInfos = []
for item in params.get("TraceInfos"):
obj = TraceInfo()
obj._deserialize(item)
self._TraceInfos.append(obj)
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class SearchTraceRequest(AbstractModel):
"""SearchTrace请求参数结构体
"""
def __init__(self):
r"""
:param _GroupId: 希望搜索的人体库ID。
:type GroupId: str
:param _Trace: 人体动作轨迹信息。
:type Trace: :class:`tencentcloud.bda.v20200324.models.Trace`
:param _MaxPersonNum: 单张被识别的人体动作轨迹返回的最相似人员数量。
默认值为5,最大值为100。
例,设MaxPersonNum为8,则返回Top8相似的人员信息。 值越大,需要处理的时间越长。建议不要超过10。
:type MaxPersonNum: int
:param _TraceMatchThreshold: 出参Score中,只有超过TraceMatchThreshold值的结果才会返回。
默认为0。范围[0, 100.0]。
:type TraceMatchThreshold: float
"""
self._GroupId = None
self._Trace = None
self._MaxPersonNum = None
self._TraceMatchThreshold = None
@property
def GroupId(self):
"""希望搜索的人体库ID。
:rtype: str
"""
return self._GroupId
@GroupId.setter
def GroupId(self, GroupId):
self._GroupId = GroupId
@property
def Trace(self):
"""人体动作轨迹信息。
:rtype: :class:`tencentcloud.bda.v20200324.models.Trace`
"""
return self._Trace
@Trace.setter
def Trace(self, Trace):
self._Trace = Trace
@property
def MaxPersonNum(self):
"""单张被识别的人体动作轨迹返回的最相似人员数量。
默认值为5,最大值为100。
例,设MaxPersonNum为8,则返回Top8相似的人员信息。 值越大,需要处理的时间越长。建议不要超过10。
:rtype: int
"""
return self._MaxPersonNum
@MaxPersonNum.setter
def MaxPersonNum(self, MaxPersonNum):
self._MaxPersonNum = MaxPersonNum
@property
def TraceMatchThreshold(self):
"""出参Score中,只有超过TraceMatchThreshold值的结果才会返回。
默认为0。范围[0, 100.0]。
:rtype: float
"""
return self._TraceMatchThreshold
@TraceMatchThreshold.setter
def TraceMatchThreshold(self, TraceMatchThreshold):
self._TraceMatchThreshold = TraceMatchThreshold
def _deserialize(self, params):
self._GroupId = params.get("GroupId")
if params.get("Trace") is not None:
self._Trace = Trace()
self._Trace._deserialize(params.get("Trace"))
self._MaxPersonNum = params.get("MaxPersonNum")
self._TraceMatchThreshold = params.get("TraceMatchThreshold")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class SearchTraceResponse(AbstractModel):
"""SearchTrace返回参数结构体
"""
def __init__(self):
r"""
:param _Candidates: 识别出的最相似候选人。
:type Candidates: list of Candidate
:param _InputRetCode: 输入的人体动作轨迹图片中的合法性校验结果。
只有为0时结果才有意义。
-1001: 输入图片不合法。-1002: 输入图片不能构成动作轨迹。
:type InputRetCode: int
:param _InputRetCodeDetails: 输入的人体动作轨迹图片中的合法性校验结果详情。
-1101:图片无效,-1102:url不合法。-1103:图片过大。-1104:图片下载失败。-1105:图片解码失败。-1109:图片分辨率过高。-2023:动作轨迹中有非同人图片。-2024: 动作轨迹提取失败。-2025: 人体检测失败。
:type InputRetCodeDetails: list of int
:param _BodyModelVersion: 人体识别所用的算法模型版本。
:type BodyModelVersion: str
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._Candidates = None
self._InputRetCode = None
self._InputRetCodeDetails = None
self._BodyModelVersion = None
self._RequestId = None
@property
def Candidates(self):
"""识别出的最相似候选人。
:rtype: list of Candidate
"""
return self._Candidates
@Candidates.setter
def Candidates(self, Candidates):
self._Candidates = Candidates
@property
def InputRetCode(self):
"""输入的人体动作轨迹图片中的合法性校验结果。
只有为0时结果才有意义。
-1001: 输入图片不合法。-1002: 输入图片不能构成动作轨迹。
:rtype: int
"""
return self._InputRetCode
@InputRetCode.setter
def InputRetCode(self, InputRetCode):
self._InputRetCode = InputRetCode
@property
def InputRetCodeDetails(self):
"""输入的人体动作轨迹图片中的合法性校验结果详情。
-1101:图片无效,-1102:url不合法。-1103:图片过大。-1104:图片下载失败。-1105:图片解码失败。-1109:图片分辨率过高。-2023:动作轨迹中有非同人图片。-2024: 动作轨迹提取失败。-2025: 人体检测失败。
:rtype: list of int
"""
return self._InputRetCodeDetails
@InputRetCodeDetails.setter
def InputRetCodeDetails(self, InputRetCodeDetails):
self._InputRetCodeDetails = InputRetCodeDetails
@property
def BodyModelVersion(self):
"""人体识别所用的算法模型版本。
:rtype: str
"""
return self._BodyModelVersion
@BodyModelVersion.setter
def BodyModelVersion(self, BodyModelVersion):
self._BodyModelVersion = BodyModelVersion
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
if params.get("Candidates") is not None:
self._Candidates = []
for item in params.get("Candidates"):
obj = Candidate()
obj._deserialize(item)
self._Candidates.append(obj)
self._InputRetCode = params.get("InputRetCode")
self._InputRetCodeDetails = params.get("InputRetCodeDetails")
self._BodyModelVersion = params.get("BodyModelVersion")
self._RequestId = params.get("RequestId")
class SegmentCustomizedPortraitPicRequest(AbstractModel):
"""SegmentCustomizedPortraitPic请求参数结构体
"""
def __init__(self):
r"""
:param _SegmentationOptions: 此参数为分割选项,请根据需要选择自己所想从图片中分割的部分。注意所有选项均为非必选,如未选择则值默认为false, 但是必须要保证多于一个选项的描述为true。
:type SegmentationOptions: :class:`tencentcloud.bda.v20200324.models.SegmentationOptions`
:param _Image: 图片 base64 数据,base64 编码后大小不可超过5M。
图片分辨率须小于2000*2000。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:type Image: str
:param _Url: 图片的 Url 。
Url、Image必须提供一个,如果都提供,只使用 Url。
图片分辨率须小于2000*2000 ,图片 base64 编码后大小不可超过5M。
图片存储于腾讯云的Url可保障更高下载速度和稳定性,建议图片存储于腾讯云。
非腾讯云存储的Url速度和稳定性可能受一定影响。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:type Url: str
"""
self._SegmentationOptions = None
self._Image = None
self._Url = None
@property
def SegmentationOptions(self):
"""此参数为分割选项,请根据需要选择自己所想从图片中分割的部分。注意所有选项均为非必选,如未选择则值默认为false, 但是必须要保证多于一个选项的描述为true。
:rtype: :class:`tencentcloud.bda.v20200324.models.SegmentationOptions`
"""
return self._SegmentationOptions
@SegmentationOptions.setter
def SegmentationOptions(self, SegmentationOptions):
self._SegmentationOptions = SegmentationOptions
@property
def Image(self):
"""图片 base64 数据,base64 编码后大小不可超过5M。
图片分辨率须小于2000*2000。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:rtype: str
"""
return self._Image
@Image.setter
def Image(self, Image):
self._Image = Image
@property
def Url(self):
"""图片的 Url 。
Url、Image必须提供一个,如果都提供,只使用 Url。
图片分辨率须小于2000*2000 ,图片 base64 编码后大小不可超过5M。
图片存储于腾讯云的Url可保障更高下载速度和稳定性,建议图片存储于腾讯云。
非腾讯云存储的Url速度和稳定性可能受一定影响。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:rtype: str
"""
return self._Url
@Url.setter
def Url(self, Url):
self._Url = Url
def _deserialize(self, params):
if params.get("SegmentationOptions") is not None:
self._SegmentationOptions = SegmentationOptions()
self._SegmentationOptions._deserialize(params.get("SegmentationOptions"))
self._Image = params.get("Image")
self._Url = params.get("Url")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class SegmentCustomizedPortraitPicResponse(AbstractModel):
"""SegmentCustomizedPortraitPic返回参数结构体
"""
def __init__(self):
r"""
:param _PortraitImage: 根据指定标签分割输出的透明背景人像图片的 base64 数据。
:type PortraitImage: str
:param _MaskImage: 指定标签处理后的Mask。一个通过 Base64 编码的文件,解码后文件由 Float 型浮点数组成。这些浮点数代表原图从左上角开始的每一行的每一个像素点,每一个浮点数的值是原图相应像素点位于人体轮廓内的置信度(0-1)转化的灰度值(0-255)
:type MaskImage: str
:param _ImageRects: 坐标信息。
注意:此字段可能返回 null,表示取不到有效值。
:type ImageRects: list of ImageRect
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._PortraitImage = None
self._MaskImage = None
self._ImageRects = None
self._RequestId = None
@property
def PortraitImage(self):
"""根据指定标签分割输出的透明背景人像图片的 base64 数据。
:rtype: str
"""
return self._PortraitImage
@PortraitImage.setter
def PortraitImage(self, PortraitImage):
self._PortraitImage = PortraitImage
@property
def MaskImage(self):
"""指定标签处理后的Mask。一个通过 Base64 编码的文件,解码后文件由 Float 型浮点数组成。这些浮点数代表原图从左上角开始的每一行的每一个像素点,每一个浮点数的值是原图相应像素点位于人体轮廓内的置信度(0-1)转化的灰度值(0-255)
:rtype: str
"""
return self._MaskImage
@MaskImage.setter
def MaskImage(self, MaskImage):
self._MaskImage = MaskImage
@property
def ImageRects(self):
"""坐标信息。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: list of ImageRect
"""
return self._ImageRects
@ImageRects.setter
def ImageRects(self, ImageRects):
self._ImageRects = ImageRects
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._PortraitImage = params.get("PortraitImage")
self._MaskImage = params.get("MaskImage")
if params.get("ImageRects") is not None:
self._ImageRects = []
for item in params.get("ImageRects"):
obj = ImageRect()
obj._deserialize(item)
self._ImageRects.append(obj)
self._RequestId = params.get("RequestId")
class SegmentPortraitPicRequest(AbstractModel):
"""SegmentPortraitPic请求参数结构体
"""
def __init__(self):
r"""
:param _Image: 图片 base64 数据,base64 编码后大小不可超过5M。
图片分辨率须小于2000*2000。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:type Image: str
:param _Url: 图片的 Url 。
Url、Image必须提供一个,如果都提供,只使用 Url。
图片分辨率须小于2000*2000 ,图片 base64 编码后大小不可超过5M。
图片存储于腾讯云的Url可保障更高下载速度和稳定性,建议图片存储于腾讯云。
非腾讯云存储的Url速度和稳定性可能受一定影响。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:type Url: str
:param _RspImgType: 返回图像方式(base64 或 Url ) ,二选一。url有效期为30分钟。
:type RspImgType: str
:param _Scene: 适用场景类型。
取值:GEN/GS。GEN为通用场景模式;GS为绿幕场景模式,针对绿幕场景下的人像分割效果更好。
两种模式选择一种传入,默认为GEN。
:type Scene: str
"""
self._Image = None
self._Url = None
self._RspImgType = None
self._Scene = None
@property
def Image(self):
"""图片 base64 数据,base64 编码后大小不可超过5M。
图片分辨率须小于2000*2000。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:rtype: str
"""
return self._Image
@Image.setter
def Image(self, Image):
self._Image = Image
@property
def Url(self):
"""图片的 Url 。
Url、Image必须提供一个,如果都提供,只使用 Url。
图片分辨率须小于2000*2000 ,图片 base64 编码后大小不可超过5M。
图片存储于腾讯云的Url可保障更高下载速度和稳定性,建议图片存储于腾讯云。
非腾讯云存储的Url速度和稳定性可能受一定影响。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:rtype: str
"""
return self._Url
@Url.setter
def Url(self, Url):
self._Url = Url
@property
def RspImgType(self):
"""返回图像方式(base64 或 Url ) ,二选一。url有效期为30分钟。
:rtype: str
"""
return self._RspImgType
@RspImgType.setter
def RspImgType(self, RspImgType):
self._RspImgType = RspImgType
@property
def Scene(self):
"""适用场景类型。
取值:GEN/GS。GEN为通用场景模式;GS为绿幕场景模式,针对绿幕场景下的人像分割效果更好。
两种模式选择一种传入,默认为GEN。
:rtype: str
"""
return self._Scene
@Scene.setter
def Scene(self, Scene):
self._Scene = Scene
def _deserialize(self, params):
self._Image = params.get("Image")
self._Url = params.get("Url")
self._RspImgType = params.get("RspImgType")
self._Scene = params.get("Scene")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class SegmentPortraitPicResponse(AbstractModel):
"""SegmentPortraitPic返回参数结构体
"""
def __init__(self):
r"""
:param _ResultImage: 处理后的图片 base64 数据,透明背景图。
注意:此字段可能返回 null,表示取不到有效值。
:type ResultImage: str
:param _ResultMask: 一个通过 base64 编码的文件,解码后文件由 Float 型浮点数组成。这些浮点数代表原图从左上角开始的每一行的每一个像素点,每一个浮点数的值是原图相应像素点位于人体轮廓内的置信度(0-1)转化的灰度值(0-255)。
注意:此字段可能返回 null,表示取不到有效值。
:type ResultMask: str
:param _HasForeground: 图片是否存在前景。
注意:此字段可能返回 null,表示取不到有效值。
:type HasForeground: bool
:param _ResultImageUrl: 支持将处理过的图片 base64 数据,透明背景图以Url的形式返回值,Url有效期为30分钟。
注意:此字段可能返回 null,表示取不到有效值。
:type ResultImageUrl: str
:param _ResultMaskUrl: 一个通过 base64 编码的文件,解码后文件由 Float 型浮点数组成。支持以Url形式的返回值;Url有效期为30分钟。
注意:此字段可能返回 null,表示取不到有效值。
:type ResultMaskUrl: str
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._ResultImage = None
self._ResultMask = None
self._HasForeground = None
self._ResultImageUrl = None
self._ResultMaskUrl = None
self._RequestId = None
@property
def ResultImage(self):
"""处理后的图片 base64 数据,透明背景图。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: str
"""
return self._ResultImage
@ResultImage.setter
def ResultImage(self, ResultImage):
self._ResultImage = ResultImage
@property
def ResultMask(self):
"""一个通过 base64 编码的文件,解码后文件由 Float 型浮点数组成。这些浮点数代表原图从左上角开始的每一行的每一个像素点,每一个浮点数的值是原图相应像素点位于人体轮廓内的置信度(0-1)转化的灰度值(0-255)。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: str
"""
return self._ResultMask
@ResultMask.setter
def ResultMask(self, ResultMask):
self._ResultMask = ResultMask
@property
def HasForeground(self):
"""图片是否存在前景。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: bool
"""
return self._HasForeground
@HasForeground.setter
def HasForeground(self, HasForeground):
self._HasForeground = HasForeground
@property
def ResultImageUrl(self):
"""支持将处理过的图片 base64 数据,透明背景图以Url的形式返回值,Url有效期为30分钟。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: str
"""
return self._ResultImageUrl
@ResultImageUrl.setter
def ResultImageUrl(self, ResultImageUrl):
self._ResultImageUrl = ResultImageUrl
@property
def ResultMaskUrl(self):
"""一个通过 base64 编码的文件,解码后文件由 Float 型浮点数组成。支持以Url形式的返回值;Url有效期为30分钟。
注意:此字段可能返回 null,表示取不到有效值。
:rtype: str
"""
return self._ResultMaskUrl
@ResultMaskUrl.setter
def ResultMaskUrl(self, ResultMaskUrl):
self._ResultMaskUrl = ResultMaskUrl
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._ResultImage = params.get("ResultImage")
self._ResultMask = params.get("ResultMask")
self._HasForeground = params.get("HasForeground")
self._ResultImageUrl = params.get("ResultImageUrl")
self._ResultMaskUrl = params.get("ResultMaskUrl")
self._RequestId = params.get("RequestId")
class SegmentationOptions(AbstractModel):
"""此参数为分割选项,请根据需要选择自己所想从图片中分割的部分。注意所有选项均为非必选,如未选择则值默认为false, 但是必须要保证多于一个选项的描述为true。
"""
def __init__(self):
r"""
:param _Background: 分割选项-背景
:type Background: bool
:param _Hair: 分割选项-头发
:type Hair: bool
:param _LeftEyebrow: 分割选项-左眉
:type LeftEyebrow: bool
:param _RightEyebrow: 分割选项-右眉
:type RightEyebrow: bool
:param _LeftEye: 分割选项-左眼
:type LeftEye: bool
:param _RightEye: 分割选项-右眼
:type RightEye: bool
:param _Nose: 分割选项-鼻子
:type Nose: bool
:param _UpperLip: 分割选项-上唇
:type UpperLip: bool
:param _LowerLip: 分割选项-下唇
:type LowerLip: bool
:param _Tooth: 分割选项-牙齿
:type Tooth: bool
:param _Mouth: 分割选项-口腔(不包含牙齿)
:type Mouth: bool
:param _LeftEar: 分割选项-左耳
:type LeftEar: bool
:param _RightEar: 分割选项-右耳
:type RightEar: bool
:param _Face: 分割选项-面部(不包含眼、耳、口、鼻等五官及头发。)
:type Face: bool
:param _Head: 复合分割选项-头部(包含所有的头部元素,相关装饰除外)
:type Head: bool
:param _Body: 分割选项-身体(包含脖子)
:type Body: bool
:param _Hat: 分割选项-帽子
:type Hat: bool
:param _Headdress: 分割选项-头饰
:type Headdress: bool
:param _Earrings: 分割选项-耳环
:type Earrings: bool
:param _Necklace: 分割选项-项链
:type Necklace: bool
:param _Belongings: 分割选项-随身物品( 例如伞、包、手机等。 )
:type Belongings: bool
"""
self._Background = None
self._Hair = None
self._LeftEyebrow = None
self._RightEyebrow = None
self._LeftEye = None
self._RightEye = None
self._Nose = None
self._UpperLip = None
self._LowerLip = None
self._Tooth = None
self._Mouth = None
self._LeftEar = None
self._RightEar = None
self._Face = None
self._Head = None
self._Body = None
self._Hat = None
self._Headdress = None
self._Earrings = None
self._Necklace = None
self._Belongings = None
@property
def Background(self):
"""分割选项-背景
:rtype: bool
"""
return self._Background
@Background.setter
def Background(self, Background):
self._Background = Background
@property
def Hair(self):
"""分割选项-头发
:rtype: bool
"""
return self._Hair
@Hair.setter
def Hair(self, Hair):
self._Hair = Hair
@property
def LeftEyebrow(self):
"""分割选项-左眉
:rtype: bool
"""
return self._LeftEyebrow
@LeftEyebrow.setter
def LeftEyebrow(self, LeftEyebrow):
self._LeftEyebrow = LeftEyebrow
@property
def RightEyebrow(self):
"""分割选项-右眉
:rtype: bool
"""
return self._RightEyebrow
@RightEyebrow.setter
def RightEyebrow(self, RightEyebrow):
self._RightEyebrow = RightEyebrow
@property
def LeftEye(self):
"""分割选项-左眼
:rtype: bool
"""
return self._LeftEye
@LeftEye.setter
def LeftEye(self, LeftEye):
self._LeftEye = LeftEye
@property
def RightEye(self):
"""分割选项-右眼
:rtype: bool
"""
return self._RightEye
@RightEye.setter
def RightEye(self, RightEye):
self._RightEye = RightEye
@property
def Nose(self):
"""分割选项-鼻子
:rtype: bool
"""
return self._Nose
@Nose.setter
def Nose(self, Nose):
self._Nose = Nose
@property
def UpperLip(self):
"""分割选项-上唇
:rtype: bool
"""
return self._UpperLip
@UpperLip.setter
def UpperLip(self, UpperLip):
self._UpperLip = UpperLip
@property
def LowerLip(self):
"""分割选项-下唇
:rtype: bool
"""
return self._LowerLip
@LowerLip.setter
def LowerLip(self, LowerLip):
self._LowerLip = LowerLip
@property
def Tooth(self):
"""分割选项-牙齿
:rtype: bool
"""
return self._Tooth
@Tooth.setter
def Tooth(self, Tooth):
self._Tooth = Tooth
@property
def Mouth(self):
"""分割选项-口腔(不包含牙齿)
:rtype: bool
"""
return self._Mouth
@Mouth.setter
def Mouth(self, Mouth):
self._Mouth = Mouth
@property
def LeftEar(self):
"""分割选项-左耳
:rtype: bool
"""
return self._LeftEar
@LeftEar.setter
def LeftEar(self, LeftEar):
self._LeftEar = LeftEar
@property
def RightEar(self):
"""分割选项-右耳
:rtype: bool
"""
return self._RightEar
@RightEar.setter
def RightEar(self, RightEar):
self._RightEar = RightEar
@property
def Face(self):
"""分割选项-面部(不包含眼、耳、口、鼻等五官及头发。)
:rtype: bool
"""
return self._Face
@Face.setter
def Face(self, Face):
self._Face = Face
@property
def Head(self):
"""复合分割选项-头部(包含所有的头部元素,相关装饰除外)
:rtype: bool
"""
return self._Head
@Head.setter
def Head(self, Head):
self._Head = Head
@property
def Body(self):
"""分割选项-身体(包含脖子)
:rtype: bool
"""
return self._Body
@Body.setter
def Body(self, Body):
self._Body = Body
@property
def Hat(self):
"""分割选项-帽子
:rtype: bool
"""
return self._Hat
@Hat.setter
def Hat(self, Hat):
self._Hat = Hat
@property
def Headdress(self):
"""分割选项-头饰
:rtype: bool
"""
return self._Headdress
@Headdress.setter
def Headdress(self, Headdress):
self._Headdress = Headdress
@property
def Earrings(self):
"""分割选项-耳环
:rtype: bool
"""
return self._Earrings
@Earrings.setter
def Earrings(self, Earrings):
self._Earrings = Earrings
@property
def Necklace(self):
"""分割选项-项链
:rtype: bool
"""
return self._Necklace
@Necklace.setter
def Necklace(self, Necklace):
self._Necklace = Necklace
@property
def Belongings(self):
"""分割选项-随身物品( 例如伞、包、手机等。 )
:rtype: bool
"""
return self._Belongings
@Belongings.setter
def Belongings(self, Belongings):
self._Belongings = Belongings
def _deserialize(self, params):
self._Background = params.get("Background")
self._Hair = params.get("Hair")
self._LeftEyebrow = params.get("LeftEyebrow")
self._RightEyebrow = params.get("RightEyebrow")
self._LeftEye = params.get("LeftEye")
self._RightEye = params.get("RightEye")
self._Nose = params.get("Nose")
self._UpperLip = params.get("UpperLip")
self._LowerLip = params.get("LowerLip")
self._Tooth = params.get("Tooth")
self._Mouth = params.get("Mouth")
self._LeftEar = params.get("LeftEar")
self._RightEar = params.get("RightEar")
self._Face = params.get("Face")
self._Head = params.get("Head")
self._Body = params.get("Body")
self._Hat = params.get("Hat")
self._Headdress = params.get("Headdress")
self._Earrings = params.get("Earrings")
self._Necklace = params.get("Necklace")
self._Belongings = params.get("Belongings")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class TerminateSegmentationTaskRequest(AbstractModel):
"""TerminateSegmentationTask请求参数结构体
"""
def __init__(self):
r"""
:param _TaskID: 在提交分割任务成功时返回的任务标识ID。
:type TaskID: str
"""
self._TaskID = None
@property
def TaskID(self):
"""在提交分割任务成功时返回的任务标识ID。
:rtype: str
"""
return self._TaskID
@TaskID.setter
def TaskID(self, TaskID):
self._TaskID = TaskID
def _deserialize(self, params):
self._TaskID = params.get("TaskID")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class TerminateSegmentationTaskResponse(AbstractModel):
"""TerminateSegmentationTask返回参数结构体
"""
def __init__(self):
r"""
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:type RequestId: str
"""
self._RequestId = None
@property
def RequestId(self):
"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
:rtype: str
"""
return self._RequestId
@RequestId.setter
def RequestId(self, RequestId):
self._RequestId = RequestId
def _deserialize(self, params):
self._RequestId = params.get("RequestId")
class Trace(AbstractModel):
"""人体动作轨迹信息
"""
def __init__(self):
r"""
:param _Images: 人体动作轨迹图片 Base64 数组。
数组长度最小为1最大为5。
单个图片 base64 编码后大小不可超过2M。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:type Images: list of str
:param _Urls: 人体动作轨迹图片 Url 数组。
数组长度最小为1最大为5。
单个图片 base64 编码后大小不可超过2M。
Urls、Images必须提供一个,如果都提供,只使用 Urls。
图片存储于腾讯云的Url可保障更高下载速度和稳定性,建议图片存储于腾讯云。
非腾讯云存储的Url速度和稳定性可能受一定影响。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:type Urls: list of str
:param _BodyRects: 若输入的Images 和 Urls 是已经裁剪后的人体小图,则可以忽略本参数。
若否,或图片中包含多个人体,则需要通过本参数来指定图片中的人体框。
顺序对应 Images 或 Urls 中的顺序。
当不输入本参数时,我们将认为输入图片已是经过裁剪后的人体小图,不会进行人体检测而直接进行特征提取处理。
:type BodyRects: list of BodyRect
"""
self._Images = None
self._Urls = None
self._BodyRects = None
@property
def Images(self):
"""人体动作轨迹图片 Base64 数组。
数组长度最小为1最大为5。
单个图片 base64 编码后大小不可超过2M。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:rtype: list of str
"""
return self._Images
@Images.setter
def Images(self, Images):
self._Images = Images
@property
def Urls(self):
"""人体动作轨迹图片 Url 数组。
数组长度最小为1最大为5。
单个图片 base64 编码后大小不可超过2M。
Urls、Images必须提供一个,如果都提供,只使用 Urls。
图片存储于腾讯云的Url可保障更高下载速度和稳定性,建议图片存储于腾讯云。
非腾讯云存储的Url速度和稳定性可能受一定影响。
支持PNG、JPG、JPEG、BMP,不支持 GIF 图片。
:rtype: list of str
"""
return self._Urls
@Urls.setter
def Urls(self, Urls):
self._Urls = Urls
@property
def BodyRects(self):
"""若输入的Images 和 Urls 是已经裁剪后的人体小图,则可以忽略本参数。
若否,或图片中包含多个人体,则需要通过本参数来指定图片中的人体框。
顺序对应 Images 或 Urls 中的顺序。
当不输入本参数时,我们将认为输入图片已是经过裁剪后的人体小图,不会进行人体检测而直接进行特征提取处理。
:rtype: list of BodyRect
"""
return self._BodyRects
@BodyRects.setter
def BodyRects(self, BodyRects):
self._BodyRects = BodyRects
def _deserialize(self, params):
self._Images = params.get("Images")
self._Urls = params.get("Urls")
if params.get("BodyRects") is not None:
self._BodyRects = []
for item in params.get("BodyRects"):
obj = BodyRect()
obj._deserialize(item)
self._BodyRects.append(obj)
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class TraceInfo(AbstractModel):
"""人体动作轨迹信息。
"""
def __init__(self):
r"""
:param _TraceId: 人体动作轨迹ID。
:type TraceId: str
:param _BodyIds: 包含的人体动作轨迹图片Id列表。
:type BodyIds: list of str
"""
self._TraceId = None
self._BodyIds = None
@property
def TraceId(self):
"""人体动作轨迹ID。
:rtype: str
"""
return self._TraceId
@TraceId.setter
def TraceId(self, TraceId):
self._TraceId = TraceId
@property
def BodyIds(self):
"""包含的人体动作轨迹图片Id列表。
:rtype: list of str
"""
return self._BodyIds
@BodyIds.setter
def BodyIds(self, BodyIds):
self._BodyIds = BodyIds
def _deserialize(self, params):
self._TraceId = params.get("TraceId")
self._BodyIds = params.get("BodyIds")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class UpperBodyCloth(AbstractModel):
"""上衣属性信息
"""
def __init__(self):
r"""
:param _Texture: 上衣纹理信息。
:type Texture: :class:`tencentcloud.bda.v20200324.models.UpperBodyClothTexture`
:param _Color: 上衣颜色信息。
:type Color: :class:`tencentcloud.bda.v20200324.models.UpperBodyClothColor`
:param _Sleeve: 上衣衣袖信息。
:type Sleeve: :class:`tencentcloud.bda.v20200324.models.UpperBodyClothSleeve`
"""
self._Texture = None
self._Color = None
self._Sleeve = None
@property
def Texture(self):
"""上衣纹理信息。
:rtype: :class:`tencentcloud.bda.v20200324.models.UpperBodyClothTexture`
"""
return self._Texture
@Texture.setter
def Texture(self, Texture):
self._Texture = Texture
@property
def Color(self):
"""上衣颜色信息。
:rtype: :class:`tencentcloud.bda.v20200324.models.UpperBodyClothColor`
"""
return self._Color
@Color.setter
def Color(self, Color):
self._Color = Color
@property
def Sleeve(self):
"""上衣衣袖信息。
:rtype: :class:`tencentcloud.bda.v20200324.models.UpperBodyClothSleeve`
"""
return self._Sleeve
@Sleeve.setter
def Sleeve(self, Sleeve):
self._Sleeve = Sleeve
def _deserialize(self, params):
if params.get("Texture") is not None:
self._Texture = UpperBodyClothTexture()
self._Texture._deserialize(params.get("Texture"))
if params.get("Color") is not None:
self._Color = UpperBodyClothColor()
self._Color._deserialize(params.get("Color"))
if params.get("Sleeve") is not None:
self._Sleeve = UpperBodyClothSleeve()
self._Sleeve._deserialize(params.get("Sleeve"))
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class UpperBodyClothColor(AbstractModel):
"""上衣颜色信息。
"""
def __init__(self):
r"""
:param _Type: 上衣颜色信息,返回值为以下集合中的一个 {红色系, 黄色系, 绿色系, 蓝色系, 黑色系, 灰白色系。
:type Type: str
:param _Probability: Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:type Probability: float
"""
self._Type = None
self._Probability = None
@property
def Type(self):
"""上衣颜色信息,返回值为以下集合中的一个 {红色系, 黄色系, 绿色系, 蓝色系, 黑色系, 灰白色系。
:rtype: str
"""
return self._Type
@Type.setter
def Type(self, Type):
self._Type = Type
@property
def Probability(self):
"""Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:rtype: float
"""
return self._Probability
@Probability.setter
def Probability(self, Probability):
self._Probability = Probability
def _deserialize(self, params):
self._Type = params.get("Type")
self._Probability = params.get("Probability")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class UpperBodyClothSleeve(AbstractModel):
"""上衣衣袖信息。
"""
def __init__(self):
r"""
:param _Type: 上衣衣袖信息, 返回值为以下集合中的一个 {长袖, 短袖}。
:type Type: str
:param _Probability: Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:type Probability: float
"""
self._Type = None
self._Probability = None
@property
def Type(self):
"""上衣衣袖信息, 返回值为以下集合中的一个 {长袖, 短袖}。
:rtype: str
"""
return self._Type
@Type.setter
def Type(self, Type):
self._Type = Type
@property
def Probability(self):
"""Type识别概率值,[0.0,1.0],代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:rtype: float
"""
return self._Probability
@Probability.setter
def Probability(self, Probability):
self._Probability = Probability
def _deserialize(self, params):
self._Type = params.get("Type")
self._Probability = params.get("Probability")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class UpperBodyClothTexture(AbstractModel):
"""上衣纹理信息。
"""
def __init__(self):
r"""
:param _Type: 上衣纹理信息,返回值为以下集合中的一个, {纯色, 格子, 大色块}。
:type Type: str
:param _Probability: Type识别概率值,[0.0,1.0], 代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:type Probability: float
"""
self._Type = None
self._Probability = None
@property
def Type(self):
"""上衣纹理信息,返回值为以下集合中的一个, {纯色, 格子, 大色块}。
:rtype: str
"""
return self._Type
@Type.setter
def Type(self, Type):
self._Type = Type
@property
def Probability(self):
"""Type识别概率值,[0.0,1.0], 代表判断正确的概率。如0.8则代表有Type值有80%概率正确。
:rtype: float
"""
return self._Probability
@Probability.setter
def Probability(self, Probability):
self._Probability = Probability
def _deserialize(self, params):
self._Type = params.get("Type")
self._Probability = params.get("Probability")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
class VideoBasicInformation(AbstractModel):
"""视频基础信息
"""
def __init__(self):
r"""
:param _FrameWidth: 视频宽度
:type FrameWidth: int
:param _FrameHeight: 视频高度
:type FrameHeight: int
:param _FramesPerSecond: 视频帧速率(FPS)
:type FramesPerSecond: int
:param _Duration: 视频时长
:type Duration: float
:param _TotalFrames: 视频帧数
:type TotalFrames: int
"""
self._FrameWidth = None
self._FrameHeight = None
self._FramesPerSecond = None
self._Duration = None
self._TotalFrames = None
@property
def FrameWidth(self):
"""视频宽度
:rtype: int
"""
return self._FrameWidth
@FrameWidth.setter
def FrameWidth(self, FrameWidth):
self._FrameWidth = FrameWidth
@property
def FrameHeight(self):
"""视频高度
:rtype: int
"""
return self._FrameHeight
@FrameHeight.setter
def FrameHeight(self, FrameHeight):
self._FrameHeight = FrameHeight
@property
def FramesPerSecond(self):
"""视频帧速率(FPS)
:rtype: int
"""
return self._FramesPerSecond
@FramesPerSecond.setter
def FramesPerSecond(self, FramesPerSecond):
self._FramesPerSecond = FramesPerSecond
@property
def Duration(self):
"""视频时长
:rtype: float
"""
return self._Duration
@Duration.setter
def Duration(self, Duration):
self._Duration = Duration
@property
def TotalFrames(self):
"""视频帧数
:rtype: int
"""
return self._TotalFrames
@TotalFrames.setter
def TotalFrames(self, TotalFrames):
self._TotalFrames = TotalFrames
def _deserialize(self, params):
self._FrameWidth = params.get("FrameWidth")
self._FrameHeight = params.get("FrameHeight")
self._FramesPerSecond = params.get("FramesPerSecond")
self._Duration = params.get("Duration")
self._TotalFrames = params.get("TotalFrames")
memeber_set = set(params.keys())
for name, value in vars(self).items():
property_name = name[1:]
if property_name in memeber_set:
memeber_set.remove(property_name)
if len(memeber_set) > 0:
warnings.warn("%s fileds are useless." % ",".join(memeber_set))