예제 #1
0
    def test_unpack_numpy(self):
        buffer = struct.pack("<ffff", 1., 2.5, 3.5, 4.5)
        reader = BufferReader(buffer)

        arr = reader.unpack_numpy(ConstStructs.float, (2, 2))

        res = np.array([[1., 2.5], [3.5, 4.5]])
        self.assertTrue(np.all(arr == res), msg="Numpy unpacked array is not equal to expected array")
예제 #2
0
    def test_unpack_torch(self):
        buffer = struct.pack("<ffff", 1., 2.5, 3.5, 4.5)
        reader = BufferReader(buffer)

        arr = reader.unpack_torch(ConstStructs.float, (2, 2))

        res = torch.tensor([[1., 2.5], [3.5, 4.5]])
        self.assertTrue(torch.all(arr == res), msg="Torch unpacked array is not equal to expected array")
def read_body(pose_bytes: bytes, header: PoseHeader, read_offset: Optional[int] = None):
    reader = BufferReader(pose_bytes)
    if header is None:
        header = PoseHeader.read(reader)
    else:
        reader.read_offset = read_offset

    return NumPyPoseBody.read(header, reader)
예제 #4
0
    def test_unpack_tensorflow(self):
        buffer = struct.pack("<ffff", 1., 2.5, 3.5, 4.5)
        reader = BufferReader(buffer)

        arr = reader.unpack_tensorflow(ConstStructs.float, (2, 2))

        res = tf.constant([[1., 2.5], [3.5, 4.5]])
        self.assertTrue(tf.reduce_all(tf.equal(arr, res)),
                        msg="Tensorflow unpacked array is not equal to expected array")
예제 #5
0
def get_openpose_header():
  """Get pose header with OpenPose components description."""
  dir_path = os.path.dirname(os.path.realpath(__file__))
  header_path = os.path.join(dir_path, "assets/openpose.poseheader")
  f = open(header_path, "rb")
  reader = BufferReader(f.read())
  header = PoseHeader.read(reader)
  return header
예제 #6
0
    def read_v0_1(cls, header: PoseHeader, reader: BufferReader):
        fps, _frames = reader.unpack(ConstStructs.double_ushort)

        _people = reader.unpack(ConstStructs.ushort)
        _points = sum([len(c.points) for c in header.components])
        _dims = max([len(c.format) for c in header.components]) - 1

        # _frames is defined as short, which sometimes is not enough! TODO change to int
        _frames = int(reader.bytes_left() / (_people * _points *
                                             (_dims + 1) * 4))

        tensor_reader = reader.__getattribute__(cls.tensor_reader)
        data = tensor_reader(ConstStructs.float,
                             shape=(_frames, _people, _points, _dims))
        confidence = tensor_reader(ConstStructs.float,
                                   shape=(_frames, _people, _points))

        return cls(fps, data, confidence)
예제 #7
0
def get_pose_header():
    """Get pose header with components description."""
    dir_path = os.path.dirname(os.path.realpath(__file__))
    header_path = os.path.join(dir_path, "holistic.poseheader")
    f = open(header_path, "rb")
    reader = BufferReader(f.read())
    header = PoseHeader.read(reader)
    header.components.pop(1)  # Remove face from holistic pose
    return header
예제 #8
0
    def read(buffer: bytes, pose_body: PoseBody):
        reader = BufferReader(buffer)
        header = PoseHeader.read(reader)
        body = pose_body.read(header, reader)

        return Pose(header, body)
예제 #9
0
 def test_unpack_str(self):
     s = "hello"
     buffer = struct.pack("<H%ds" % len(s), len(s), bytes(s, 'utf8'))
     reader = BufferReader(buffer)
     unpacked_s = reader.unpack_str()
     self.assertEqual(unpacked_s, s)
예제 #10
0
 def test_unpack_f(self):
     buffer = struct.pack("<fh", 5.5, 3)
     reader = BufferReader(buffer)
     unpacked_f, unpacked_short = reader.unpack_f("fh")
     self.assertEqual(unpacked_f, 5.5)
     self.assertEqual(unpacked_short, 3)
예제 #11
0
 def test_unpack(self):
     buffer = struct.pack("<f", 5.5)
     reader = BufferReader(buffer)
     unpacked_f = reader.unpack(ConstStructs.float)
     self.assertEqual(unpacked_f, 5.5)
예제 #12
0
 def test_advance(self):
     reader = BufferReader(bytes())
     reader.advance(ConstStructs.float, 10)
     self.assertEqual(reader.read_offset, 40)
예제 #13
0
 def test_bytes_left(self):
     reader = BufferReader(bytes(range(6)))
     reader.unpack_f("f")
     bytes_left = reader.bytes_left()
     self.assertEqual(bytes_left, 2)
예제 #14
0
rep_modules1 = []
rep_modules2 = []
if args.rep_points:
    rep_modules1.append(PointsRepresentation())
if args.rep_distance:
    rep_modules2.append(DistanceRepresentation())
if args.rep_angles:
    rep_modules2.append(AngleRepresentation())

pose_headers = []

HOLISTIC_POSE_HEADER = OPENPOSE_POSE_HEADER = None

if args.holistic:
    with open("holistic.poseheader", "rb") as f:
        HOLISTIC_POSE_HEADER = PoseHeader.read(BufferReader(f.read()))

    components = []
    for c in HOLISTIC_POSE_HEADER.components:
        if c.name in args.holistic_pose_components:
            c_copy = pickle.loads(pickle.dumps(c))
            c_copy.format = c_copy.format[:args.pose_dims]
            components.append(c_copy)

    rep_header = PoseHeader(version=HOLISTIC_POSE_HEADER.version,
                            dimensions=HOLISTIC_POSE_HEADER.dimensions,
                            components=components)
    pose_headers.append(rep_header)

if args.openpose:
    with open("openpose_135.poseheader", "rb") as f:
def read_header(header_path: str):
    with open(header_path, "rb") as f:
        reader = BufferReader(f.read())
        header = PoseHeader.read(reader)
        return header, reader.read_offset