|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from typing import Optional |
|
|
|
|
|
import numpy as np |
|
|
from mmcv.transforms import LoadImageFromFile |
|
|
|
|
|
from mmpose.registry import TRANSFORMS |
|
|
|
|
|
|
|
|
@TRANSFORMS.register_module() |
|
|
class LoadImage(LoadImageFromFile): |
|
|
"""Load an image from file or from the np.ndarray in ``results['img']``. |
|
|
|
|
|
Required Keys: |
|
|
|
|
|
- img_path |
|
|
- img (optional) |
|
|
|
|
|
Modified Keys: |
|
|
|
|
|
- img |
|
|
- img_shape |
|
|
- ori_shape |
|
|
- img_path (optional) |
|
|
|
|
|
Args: |
|
|
to_float32 (bool): Whether to convert the loaded image to a float32 |
|
|
numpy array. If set to False, the loaded image is an uint8 array. |
|
|
Defaults to False. |
|
|
color_type (str): The flag argument for :func:``mmcv.imfrombytes``. |
|
|
Defaults to 'color'. |
|
|
imdecode_backend (str): The image decoding backend type. The backend |
|
|
argument for :func:``mmcv.imfrombytes``. |
|
|
See :func:``mmcv.imfrombytes`` for details. |
|
|
Defaults to 'cv2'. |
|
|
backend_args (dict, optional): Arguments to instantiate the preifx of |
|
|
uri corresponding backend. Defaults to None. |
|
|
ignore_empty (bool): Whether to allow loading empty image or file path |
|
|
not existent. Defaults to False. |
|
|
""" |
|
|
|
|
|
def transform(self, results: dict) -> Optional[dict]: |
|
|
"""The transform function of :class:`LoadImage`. |
|
|
|
|
|
Args: |
|
|
results (dict): The result dict |
|
|
|
|
|
Returns: |
|
|
dict: The result dict. |
|
|
""" |
|
|
|
|
|
if 'img' not in results: |
|
|
|
|
|
results = super().transform(results) |
|
|
else: |
|
|
img = results['img'] |
|
|
assert isinstance(img, np.ndarray) |
|
|
if self.to_float32: |
|
|
img = img.astype(np.float32) |
|
|
|
|
|
if 'img_path' not in results: |
|
|
results['img_path'] = None |
|
|
results['img_shape'] = img.shape[:2] |
|
|
results['ori_shape'] = img.shape[:2] |
|
|
|
|
|
return results |
|
|
|