def roi_is_full(roi, shape):
    """
    Check if ROI covers the entire region.

    :returns: ``True`` if ``roi`` covers region from ``(0,..) -> shape``
    :returns: ``False`` if ``roi`` actually crops an image
    """

    def slice_full(s, n):
        return s.start in (0, None) and s.stop in (n, None)

    if isinstance(roi, slice):
        roi = (roi,)
        shape = (shape,)

    return all(slice_full(s, n) for s, n in zip(roi, shape))