diff --git a/rbproto/python/shot_pb2.py b/rbproto/python/shot_pb2.py index a216881..324e5d3 100644 --- a/rbproto/python/shot_pb2.py +++ b/rbproto/python/shot_pb2.py @@ -2,18 +2,18 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: shot.proto """Generated protocol buffer code.""" + from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder - # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\nshot.proto\x12\x0fserialized_shot"?\n\x03\x42ox\x12\x0c\n\x04left\x18\x01 \x01(\x02\x12\x0b\n\x03top\x18\x02 \x01(\x02\x12\r\n\x05width\x18\x03 \x01(\x02\x12\x0e\n\x06height\x18\x04 \x01(\x02"\x1d\n\x05Point\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02"\x7f\n\rBallDetection\x12.\n\x0eplane_position\x18\x01 \x01(\x0b\x32\x16.serialized_shot.Point\x12(\n\nannotation\x18\x02 \x01(\x0b\x32\x14.serialized_shot.Box\x12\x14\n\x0cinterpolated\x18\x03 \x01(\x08"T\n\x10RLEBallDetection\x12\x31\n\tdetection\x18\x01 \x01(\x0b\x32\x1e.serialized_shot.BallDetection\x12\r\n\x05\x63ount\x18\x02 \x01(\r"L\n\x13RLEDetectionHistory\x12\x35\n\ndetections\x18\x01 \x03(\x0b\x32!.serialized_shot.RLEBallDetection"F\n\x10\x44\x65tectionHistory\x12\x32\n\ndetections\x18\x01 \x03(\x0b\x32\x1e.serialized_shot.BallDetection"\xfc\x01\n\rCollisionInfo\x12\x0e\n\x06source\x18\x01 \x01(\r\x12M\n\x10\x62\x61ll_identifiers\x18\x02 \x03(\x0b\x32\x33.serialized_shot.CollisionInfo.BallIdentifiersEntry\x12\x17\n\x0fwall_identifier\x18\x03 \x01(\r\x12\x13\n\x0b\x66rame_index\x18\x04 \x01(\r\x12\x0e\n\x06static\x18\x05 \x01(\x08\x1aN\n\x14\x42\x61llIdentifiersEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.serialized_shot.Point:\x02\x38\x01"\xcc\x02\n\x04Path\x12\x13\n\x0bstart_frame\x18\x01 \x01(\r\x12\x11\n\tend_frame\x18\x02 \x01(\r\x12\x37\n\ndetections\x18\x03 \x01(\x0b\x32!.serialized_shot.DetectionHistoryH\x00\x12>\n\x0erle_detections\x18\x04 \x01(\x0b\x32$.serialized_shot.RLEDetectionHistoryH\x00\x12\x15\n\x0bnot_present\x18\x05 \x01(\x08H\x00\x12\x11\n\tis_static\x18\x06 \x01(\x08\x12\x32\n\nstart_info\x18\x07 \x01(\x0b\x32\x1e.serialized_shot.CollisionInfo\x12\x30\n\x08\x65nd_info\x18\x08 \x01(\x0b\x32\x1e.serialized_shot.CollisionInfoB\x13\n\x11\x64\x65tection_history"R\n\x11IdentifierHistory\x12\x17\n\x0f\x62\x61ll_identifier\x18\x01 \x01(\r\x12$\n\x05paths\x18\x02 \x03(\x0b\x32\x15.serialized_shot.Path"\xf4\x01\n\x12KeyBallIdentifiers\x12\x10\n\x08\x63ue_ball\x18\x01 \x01(\r\x12\x13\n\x0bobject_ball\x18\x02 \x01(\r\x12\x13\n\x0btarget_ball\x18\x03 \x01(\r\x12\x18\n\x10\x63ontact_sequence\x18\x04 \x03(\r\x12\x18\n\x0b\x63ue_ball_id\x18\x05 \x01(\rH\x00\x88\x01\x01\x12\x1b\n\x0eobject_ball_id\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x1b\n\x0etarget_ball_id\x18\x07 \x01(\rH\x02\x88\x01\x01\x42\x0e\n\x0c_cue_ball_idB\x11\n\x0f_object_ball_idB\x11\n\x0f_target_ball_id"\xa8\x01\n\x04Shot\x12@\n\x14identifier_histories\x18\x03 \x03(\x0b\x32".serialized_shot.IdentifierHistory\x12\x36\n\tkey_balls\x18\x04 \x01(\x0b\x32#.serialized_shot.KeyBallIdentifiers\x12\x13\n\x0bstart_index\x18\x05 \x01(\r\x12\x11\n\tend_index\x18\x06 \x01(\rb\x06proto3' + b'\n\nshot.proto\x12\x0fserialized_shot"?\n\x03\x42ox\x12\x0c\n\x04left\x18\x01 \x01(\x02\x12\x0b\n\x03top\x18\x02 \x01(\x02\x12\r\n\x05width\x18\x03 \x01(\x02\x12\x0e\n\x06height\x18\x04 \x01(\x02"\x1d\n\x05Point\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02"\x7f\n\rBallDetection\x12.\n\x0eplane_position\x18\x01 \x01(\x0b\x32\x16.serialized_shot.Point\x12(\n\nannotation\x18\x02 \x01(\x0b\x32\x14.serialized_shot.Box\x12\x14\n\x0cinterpolated\x18\x03 \x01(\x08"T\n\x10RLEBallDetection\x12\x31\n\tdetection\x18\x01 \x01(\x0b\x32\x1e.serialized_shot.BallDetection\x12\r\n\x05\x63ount\x18\x02 \x01(\r"L\n\x13RLEDetectionHistory\x12\x35\n\ndetections\x18\x01 \x03(\x0b\x32!.serialized_shot.RLEBallDetection"F\n\x10\x44\x65tectionHistory\x12\x32\n\ndetections\x18\x01 \x03(\x0b\x32\x1e.serialized_shot.BallDetection"\xfc\x01\n\rCollisionInfo\x12\x0e\n\x06source\x18\x01 \x01(\r\x12M\n\x10\x62\x61ll_identifiers\x18\x02 \x03(\x0b\x32\x33.serialized_shot.CollisionInfo.BallIdentifiersEntry\x12\x17\n\x0fwall_identifier\x18\x03 \x01(\r\x12\x13\n\x0b\x66rame_index\x18\x04 \x01(\r\x12\x0e\n\x06static\x18\x05 \x01(\x08\x1aN\n\x14\x42\x61llIdentifiersEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.serialized_shot.Point:\x02\x38\x01"\xcc\x02\n\x04Path\x12\x13\n\x0bstart_frame\x18\x01 \x01(\r\x12\x11\n\tend_frame\x18\x02 \x01(\r\x12\x37\n\ndetections\x18\x03 \x01(\x0b\x32!.serialized_shot.DetectionHistoryH\x00\x12>\n\x0erle_detections\x18\x04 \x01(\x0b\x32$.serialized_shot.RLEDetectionHistoryH\x00\x12\x15\n\x0bnot_present\x18\x05 \x01(\x08H\x00\x12\x11\n\tis_static\x18\x06 \x01(\x08\x12\x32\n\nstart_info\x18\x07 \x01(\x0b\x32\x1e.serialized_shot.CollisionInfo\x12\x30\n\x08\x65nd_info\x18\x08 \x01(\x0b\x32\x1e.serialized_shot.CollisionInfoB\x13\n\x11\x64\x65tection_history"I\n\x0c\x43olorCluster\x12\x11\n\tlightness\x18\x01 \x01(\x02\x12\t\n\x01\x61\x18\x02 \x01(\x02\x12\t\n\x01\x62\x18\x03 \x01(\x02\x12\x10\n\x08\x66raction\x18\x04 \x01(\x02"B\n\x0fTrajectoryColor\x12/\n\x08\x63lusters\x18\x01 \x03(\x0b\x32\x1d.serialized_shot.ColorCluster"\x8e\x01\n\x11IdentifierHistory\x12\x17\n\x0f\x62\x61ll_identifier\x18\x01 \x01(\r\x12$\n\x05paths\x18\x02 \x03(\x0b\x32\x15.serialized_shot.Path\x12:\n\x10trajectory_color\x18\x03 \x01(\x0b\x32 .serialized_shot.TrajectoryColor"\xf4\x01\n\x12KeyBallIdentifiers\x12\x10\n\x08\x63ue_ball\x18\x01 \x01(\r\x12\x13\n\x0bobject_ball\x18\x02 \x01(\r\x12\x13\n\x0btarget_ball\x18\x03 \x01(\r\x12\x18\n\x10\x63ontact_sequence\x18\x04 \x03(\r\x12\x18\n\x0b\x63ue_ball_id\x18\x05 \x01(\rH\x00\x88\x01\x01\x12\x1b\n\x0eobject_ball_id\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x1b\n\x0etarget_ball_id\x18\x07 \x01(\rH\x02\x88\x01\x01\x42\x0e\n\x0c_cue_ball_idB\x11\n\x0f_object_ball_idB\x11\n\x0f_target_ball_id"\xa8\x01\n\x04Shot\x12@\n\x14identifier_histories\x18\x03 \x03(\x0b\x32".serialized_shot.IdentifierHistory\x12\x36\n\tkey_balls\x18\x04 \x01(\x0b\x32#.serialized_shot.KeyBallIdentifiers\x12\x13\n\x0bstart_index\x18\x05 \x01(\r\x12\x11\n\tend_index\x18\x06 \x01(\rb\x06proto3' ) _globals = globals() @@ -41,10 +41,14 @@ if _descriptor._USE_C_DESCRIPTORS == False: _globals["_COLLISIONINFO_BALLIDENTIFIERSENTRY"]._serialized_end = 745 _globals["_PATH"]._serialized_start = 748 _globals["_PATH"]._serialized_end = 1080 - _globals["_IDENTIFIERHISTORY"]._serialized_start = 1082 - _globals["_IDENTIFIERHISTORY"]._serialized_end = 1164 - _globals["_KEYBALLIDENTIFIERS"]._serialized_start = 1167 - _globals["_KEYBALLIDENTIFIERS"]._serialized_end = 1411 - _globals["_SHOT"]._serialized_start = 1414 - _globals["_SHOT"]._serialized_end = 1582 + _globals["_COLORCLUSTER"]._serialized_start = 1082 + _globals["_COLORCLUSTER"]._serialized_end = 1155 + _globals["_TRAJECTORYCOLOR"]._serialized_start = 1157 + _globals["_TRAJECTORYCOLOR"]._serialized_end = 1223 + _globals["_IDENTIFIERHISTORY"]._serialized_start = 1226 + _globals["_IDENTIFIERHISTORY"]._serialized_end = 1368 + _globals["_KEYBALLIDENTIFIERS"]._serialized_start = 1371 + _globals["_KEYBALLIDENTIFIERS"]._serialized_end = 1615 + _globals["_SHOT"]._serialized_start = 1618 + _globals["_SHOT"]._serialized_end = 1786 # @@protoc_insertion_point(module_scope) diff --git a/rbproto/python/shot_pb2.pyi b/rbproto/python/shot_pb2.pyi index f149ece..337140d 100644 --- a/rbproto/python/shot_pb2.pyi +++ b/rbproto/python/shot_pb2.pyi @@ -90,7 +90,6 @@ class CollisionInfo(_message.Message): "frame_index", "static", ] - class BallIdentifiersEntry(_message.Message): __slots__ = ["key", "value"] KEY_FIELD_NUMBER: _ClassVar[int] @@ -102,6 +101,7 @@ class CollisionInfo(_message.Message): key: _Optional[int] = ..., value: _Optional[_Union[Point, _Mapping]] = ..., ) -> None: ... + SOURCE_FIELD_NUMBER: _ClassVar[int] BALL_IDENTIFIERS_FIELD_NUMBER: _ClassVar[int] WALL_IDENTIFIER_FIELD_NUMBER: _ClassVar[int] @@ -160,16 +160,45 @@ class Path(_message.Message): end_info: _Optional[_Union[CollisionInfo, _Mapping]] = ..., ) -> None: ... +class ColorCluster(_message.Message): + __slots__ = ["lightness", "a", "b", "fraction"] + LIGHTNESS_FIELD_NUMBER: _ClassVar[int] + A_FIELD_NUMBER: _ClassVar[int] + B_FIELD_NUMBER: _ClassVar[int] + FRACTION_FIELD_NUMBER: _ClassVar[int] + lightness: float + a: float + b: float + fraction: float + def __init__( + self, + lightness: _Optional[float] = ..., + a: _Optional[float] = ..., + b: _Optional[float] = ..., + fraction: _Optional[float] = ..., + ) -> None: ... + +class TrajectoryColor(_message.Message): + __slots__ = ["clusters"] + CLUSTERS_FIELD_NUMBER: _ClassVar[int] + clusters: _containers.RepeatedCompositeFieldContainer[ColorCluster] + def __init__( + self, clusters: _Optional[_Iterable[_Union[ColorCluster, _Mapping]]] = ... + ) -> None: ... + class IdentifierHistory(_message.Message): - __slots__ = ["ball_identifier", "paths"] + __slots__ = ["ball_identifier", "paths", "trajectory_color"] BALL_IDENTIFIER_FIELD_NUMBER: _ClassVar[int] PATHS_FIELD_NUMBER: _ClassVar[int] + TRAJECTORY_COLOR_FIELD_NUMBER: _ClassVar[int] ball_identifier: int paths: _containers.RepeatedCompositeFieldContainer[Path] + trajectory_color: TrajectoryColor def __init__( self, ball_identifier: _Optional[int] = ..., paths: _Optional[_Iterable[_Union[Path, _Mapping]]] = ..., + trajectory_color: _Optional[_Union[TrajectoryColor, _Mapping]] = ..., ) -> None: ... class KeyBallIdentifiers(_message.Message): diff --git a/rbproto/shot.proto b/rbproto/shot.proto index a4746c0..7e17a76 100644 --- a/rbproto/shot.proto +++ b/rbproto/shot.proto @@ -50,9 +50,21 @@ message Path { CollisionInfo end_info = 8; } +message ColorCluster { + // LAB in OpenCV's 0-255 uint8 scale (see railbird LABCV2Color). + float lightness = 1; + float a = 2; + float b = 3; + // Share of this ball's accumulated color pixels in this cluster (0-1). + float fraction = 4; +} + +message TrajectoryColor { repeated ColorCluster clusters = 1; } + message IdentifierHistory { uint32 ball_identifier = 1; repeated Path paths = 2; + TrajectoryColor trajectory_color = 3; } message KeyBallIdentifiers { uint32 cue_ball = 1;