code: def _fliplr_cv2(arr):
      # cv2.flip() returns None for arrays with zero height or width
      # and turns channels=0 to channels=512
      if arr.size == 0:
          return np.copy(arr)
  
      # cv2.flip() fails for more than 512 channels
      if arr.ndim == 3 and arr.shape[-1] > 512:
          # TODO this is quite inefficient right now
          channels = [
              cv2.flip(_normalize_cv2_input_arr_(arr[..., c]), 1)
              for c in sm.xrange(arr.shape[-1])
          ]
          result = np.stack(channels, axis=-1)
      else:
          # Normalization from imgaug.imgaug._normalize_cv2_input_arr_().
          # Moved here for performance reasons. Keep this aligned.
          # TODO recalculate timings, they were computed without this.
          flags = arr.flags
          if not flags["OWNDATA"]:
              arr = np.copy(arr)
              flags = arr.flags
          if not flags["C_CONTIGUOUS"]:
              arr = np.ascontiguousarray(arr)
  
          result = cv2.flip(_normalize_cv2_input_arr_(arr), 1)
  
      if result.ndim == 2 and arr.ndim == 3:
          return result[..., np.newaxis]
      return result
  
imports: from __future__ import print_function, division, absolute_import
  import numpy
  import cv2
  import six.moves
  from imgaug.imgaug import _normalize_cv2_input_arr_
  from .None import meta
  from ..None import parameters
  from ..None import dtypes
label_desc: Use image node_id 3 for calling a global function with example usage: _fliplr_cv2(arr) and returns: result, np, result