code: def _parse_kitti_annotations(annotations_csv):
      """Loads and parses the Kitti object annotations.
  
      Args:
        annotations_csv: csv file containing annotations for a single image.
  
      Returns:
        A list of labelled bounding boxes. Each bounding box is stored as a
        dictionary of features.
      """
      annotations = []
      for line in annotations_csv:
          (
              obj_type,
              truncated,
              occluded,
              alpha,
              left,
              top,
              right,
              bottom,
              height,
              width,
              length,
              x,
              y,
              z,
              rotation_y,
          ) = list(csv.reader([line.decode()], delimiter=" "))[0]
          # DontCare objects lack annotations, so skip them.
          if obj_type == "DontCare":
              continue
          annotations.append(
              {
                  "type": obj_type,
                  "truncated": float(truncated),
                  "occluded": int(occluded),
                  "alpha": float(alpha),
                  "bbox_raw": RawBoundingBox(
                      top=float(top),
                      bottom=float(bottom),
                      left=float(left),
                      right=float(right),
                  ),
                  "dimensions": [
                      float(v) for v in [height, width, length]
                  ],
                  "location": [float(v) for v in [x, y, z]],
                  "rotation_y": float(rotation_y),
              }
          )
      return annotations
  
file_path: datasets/tensorflow_datasets/datasets/kitti/kitti_dataset_builder.py
imports: import collections
  import csv
  import os
  import numpy
  import tensorflow_datasets.public_api
label_desc: Use image node_id 2 for calling a global function with example usage: _parse_kitti_annotations(annotations_csv) and returns: annotations