code: def test_props(test_images, tmp_path):
      props = iio.improps(
          test_images / "astronaut.png", plugin="opencv"
      )
      assert props.shape == (512, 512, 3)
      assert props.dtype == np.uint8
      assert props.n_images is None
      assert props.is_batch is False
  
      img_expected = iio.imread(test_images / "newtonscradle.gif")
      iio.imwrite(tmp_path / "test.tiff", img_expected)
  
      props = iio.improps(
          tmp_path / "test.tiff", plugin="opencv", index=...
      )
      assert props.shape == (36, 150, 200, 3)
      assert props.dtype == np.uint8
      assert props.n_images == 36
      assert props.is_batch is True
  
      props = iio.improps(
          tmp_path / "test.tiff", plugin="opencv", index=0
      )
      assert props.shape == (150, 200, 3)
      assert props.dtype == np.uint8
      assert props.n_images is None
      assert props.is_batch is False
  
file_path: imageio/tests/test_opencv.py
imports: import warnings
  import imageio.v3
  import numpy
  import pytest
  import cv2
label_desc: Use image node_id 8 for calling a global function with example usage: test_props(test_images, tmp_path) without return types