| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import importlib
- import logging
- import numpy as np
- from ray.rllib.utils.annotations import DeveloperAPI
- logger = logging.getLogger(__name__)
- @DeveloperAPI
- def is_package_installed(package_name):
- try:
- importlib.metadata.version(package_name)
- return True
- except importlib.metadata.PackageNotFoundError:
- return False
- try:
- import cv2
- cv2.ocl.setUseOpenCL(False)
- logger.debug("CV2 found for image processing.")
- except ImportError as e:
- if is_package_installed("opencv-python"):
- raise ImportError(
- f"OpenCV is installed, but we failed to import it. This may be because "
- f"you need to install `opencv-python-headless` instead of "
- f"`opencv-python`. Error message: {e}",
- )
- cv2 = None
- @DeveloperAPI
- def resize(img: np.ndarray, height: int, width: int) -> np.ndarray:
- if not cv2:
- raise ModuleNotFoundError(
- "`opencv` not installed! Do `pip install opencv-python`"
- )
- return cv2.resize(img, (width, height), interpolation=cv2.INTER_AREA)
- @DeveloperAPI
- def rgb2gray(img: np.ndarray) -> np.ndarray:
- if not cv2:
- raise ModuleNotFoundError(
- "`opencv` not installed! Do `pip install opencv-python`"
- )
- return cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
- @DeveloperAPI
- def imread(img_file: str) -> np.ndarray:
- if not cv2:
- raise ModuleNotFoundError(
- "`opencv` not installed! Do `pip install opencv-python`"
- )
- return cv2.imread(img_file).astype(np.float32)
|