code: def test_opencv_rgb(self, device, dtype):
      guide = [
          [
              [170, 89, 182, 255],
              [199, 209, 216, 205],
              [196, 213, 218, 191],
              [207, 126, 224, 249],
          ],
          [
              [61, 104, 274, 225],
              [65, 112, 14, 148],
              [78, 247, 176, 120],
              [124, 69, 155, 211],
          ],
          [
              [73, 111, 94, 175],
              [77, 117, 123, 130],
              [83, 139, 163, 120],
              [132, 84, 137, 155],
          ],
      ]
      guide = (
          torch.tensor(guide, device=device, dtype=dtype).view(
              1, 3, 4, 4
          )
          / 255
      )
  
      img = [
          [
              [170, 189, 182, 255],
              [169, 239, 206, 215],
              [196, 213, 28, 191],
              [207, 16, 234, 240],
          ],
          [
              [61, 144, 74, 225],
              [20, 112, 176, 148],
              [34, 147, 116, 120],
              [124, 61, 155, 211],
          ],
          [
              [73, 111, 90, 175],
              [177, 117, 163, 130],
              [89, 139, 163, 120],
              [132, 84, 137, 135],
          ],
      ]
      img = (
          torch.tensor(img, device=device, dtype=dtype).view(1, 3, 4, 4)
          / 255
      )
  
      kernel_size = 3
      eps = 0.01
  
      # Expected output generated with OpenCV:
      # import cv2
      # expected = cv2.ximgproc.guidedFilter(
      #   guide.squeeze().permute(1, 2, 0).numpy(),
      #   img.squeeze().permute(1, 2, 0).numpy(),
      #   (kernel_size - 1) // 2,
      #   eps,
      # ).transpose(2, 0, 1)
      expected = [
          [
              [0.7039907, 0.7277061, 0.7474556, 0.904094],
              [0.7095674, 0.76176095, 0.77444744, 0.7774203],
              [0.67807436, 0.7721572, 0.70001286, 0.7042719],
              [0.73099065, 0.28477466, 0.7464762, 0.8454268],
          ],
          [
              [0.25627214, 0.4922768, 0.3593133, 0.76788116],
              [0.21797341, 0.42890117, 0.56577384, 0.58102953],
              [0.25184435, 0.5643642, 0.59704626, 0.5153022],
              [0.42154774, 0.24721909, 0.56817913, 0.7258603],
          ],
          [
              [0.431774, 0.40672457, 0.39094293, 0.63833976],
              [0.47457936, 0.51558167, 0.58189815, 0.5340911],
              [0.45442006, 0.5345709, 0.5615816, 0.5071402],
              [0.49547666, 0.37159446, 0.5301453, 0.55153173],
          ],
      ]
      expected = torch.tensor(
          expected, device=device, dtype=dtype
      ).view(1, 3, 4, 4)
  
      out = guided_blur(
          guide, img, kernel_size, eps, border_type="replicate"
      )
      self.assert_close(out, expected)
  
file_path: kornia/test/filters/test_guided.py
imports: import pytest
  import torch
  from kornia.filters import GuidedBlur, guided_blur
  from kornia.testing import BaseTester, tensor_to_gradcheck_var
  from kornia.utils._compat import torch_version
label_desc: Use image node_id 9 for calling the TestGuidedBlur obj's underlying member method code with example usage: obj.test_opencv_rgb(device, dtype) without return types