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")
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)
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")
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
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)
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
def read(buffer: bytes, pose_body: PoseBody): reader = BufferReader(buffer) header = PoseHeader.read(reader) body = pose_body.read(header, reader) return Pose(header, body)
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)
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)
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)
def test_advance(self): reader = BufferReader(bytes()) reader.advance(ConstStructs.float, 10) self.assertEqual(reader.read_offset, 40)
def test_bytes_left(self): reader = BufferReader(bytes(range(6))) reader.unpack_f("f") bytes_left = reader.bytes_left() self.assertEqual(bytes_left, 2)
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