code: def apply_to_bboxes(
      self,
      bboxes,
      deterministic_processor=None,
      rows=0,
      cols=0,
      **params,
  ):
      if len(bboxes) > 0:
          bboxes = convert_bboxes_from_albumentations(
              bboxes, "pascal_voc", rows=rows, cols=cols
          )
  
          bboxes_t = ia.BoundingBoxesOnImage(
              [ia.BoundingBox(*bbox[:4]) for bbox in bboxes],
              (rows, cols),
          )
          bboxes_t = deterministic_processor.augment_bounding_boxes(
              [bboxes_t]
          )[0].bounding_boxes
          bboxes_t = [
              [bbox.x1, bbox.y1, bbox.x2, bbox.y2] + list(bbox_orig[4:])
              for (bbox, bbox_orig) in zip(bboxes_t, bboxes)
          ]
  
          bboxes = convert_bboxes_to_albumentations(
              bboxes_t, "pascal_voc", rows=rows, cols=cols
          )
      return bboxes
  
imports: import warnings
  from albumentations.core.bbox_utils import convert_bboxes_from_albumentations, convert_bboxes_to_albumentations
  from albumentations.core.keypoints_utils import convert_keypoints_from_albumentations, convert_keypoints_to_albumentations
  from ..augmentations import Perspective
  from ..core.transforms_interface import BasicTransform, DualTransform, ImageOnlyTransform, to_tuple
label_desc: Use image node_id 1 for calling the DualIAATransform obj's underlying member method code with example usage: obj.apply_to_bboxes(bboxes, deterministic_processor, rows, cols) and returns: bboxes