#! /usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on 2022/3/7 17:34:59

@author: LiuKuan
@copyright: Apache License, Version 2.0
'''
import numpy as np
from collections import OrderedDict
#===============================================================================
#
#===============================================================================
__all__ = ['load_cld_xyz', 'load_cld_kitti', 'load_label_kitti']

def load_cld_xyz(fname, delimiter=None):
    return np.loadtxt(fname, delimiter=delimiter)

def load_cld_kitti(fname):
    bin_data = np.fromfile(fname, dtype=np.float32)
    return bin_data.reshape((-1, 4))

def load_label_kitti(fname):
    '''返回 kitti 生成器
    :param fname:
    :return:
    '''
    with open(fname) as f:
        for line in f:
            r = line.strip().split()
            obj = OrderedDict()
            obj['type'] = r[0]  # 表明物体类别
            obj['truncation'] = float(r[1]) # 物体是否被截断，从0（非截断）到1（截断）浮动，其中truncated指离开图像边界的对象
            obj['occlusion'] = int(r[2]) # 物体是否被遮挡，整数0，1，2，3表示被遮挡的程度;0：彻底可见  1：小部分遮挡  2：大部分遮挡 3：彻底遮挡
            obj['alpha'] = float(r[3]) # 物体的观察角度，范围：-pi~pi
            obj['bbox'] = (float(r[4]), float(r[5]), float(r[6]), float(r[7]) ) # 物体的2维边界框，左上角和右下角的像素坐标
            obj['dimensions'] = (float(r[8]), float(r[9]), float(r[10])) # 3维物体的尺寸，高、宽、长（单位：米）
            obj['location'] = (float(r[11]), float(r[12]), float(r[13])) # 3维物体的位置 x,y,z（在照相机坐标系下，单位：米）
            obj['yaw'] = float(r[14]) # 3维物体的空间方向：rotation_y，在照相机坐标系下，相对于y轴的旋转角，范围：-pi~pi
            yield obj










