Source code for draugr.numpy_utilities.channel_transform

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# import numba
import numpy

__author__ = "Christian Heider Nielsen"
__doc__ = r"""

           Created on 09/10/2019
           """

__all__ = ["hwc_to_chw", "chw_to_hwc", "uint_hwc_to_chw_float", "float_chw_to_hwc_uint"]


# @numba.njit()
[docs]def hwc_to_chw(inp: numpy.ndarray) -> numpy.ndarray: """ :param inp: :type inp: :return: :rtype:""" return inp.transpose((2, 0, 1))
# @numba.njit()
[docs]def chw_to_hwc(inp: numpy.ndarray) -> numpy.ndarray: """ :param inp: :type inp: :return: :rtype:""" return inp.transpose((1, 2, 0))
# @numba.njit()
[docs]def uint_hwc_to_chw_float( inp: numpy.ndarray, *, normalise: bool = True ) -> numpy.ndarray: """ :param inp: :type inp: :param normalise: :type normalise: :return: :rtype:""" if normalise: inp /= 255.0 inp = numpy.clip(inp, 0, 1) return hwc_to_chw(inp)
# @numba.njit()
[docs]def float_chw_to_hwc_uint( inp: numpy.ndarray, *, unnormalise: bool = True ) -> numpy.ndarray: """ :param inp: :type inp: :param unnormalise: :type unnormalise: :return: :rtype:""" inp = chw_to_hwc(inp) if unnormalise: inp *= 255.0 inp = numpy.clip(inp, 0, 255) return inp.astype(numpy.uint8)