KyanChen's picture
Upload 303 files
4d0eb62
raw
history blame
2.06 kB
# Copyright (c) OpenMMLab. All rights reserved.
from typing import TYPE_CHECKING, Tuple
if TYPE_CHECKING:
from matplotlib.figure import Figure
def get_adaptive_scale(img_shape: Tuple[int, int],
min_scale: float = 0.3,
max_scale: float = 3.0) -> float:
"""Get adaptive scale according to image shape.
The target scale depends on the the short edge length of the image. If the
short edge length equals 224, the output is 1.0. And output linear scales
according the short edge length.
You can also specify the minimum scale and the maximum scale to limit the
linear scale.
Args:
img_shape (Tuple[int, int]): The shape of the canvas image.
min_size (int): The minimum scale. Defaults to 0.3.
max_size (int): The maximum scale. Defaults to 3.0.
Returns:
int: The adaptive scale.
"""
short_edge_length = min(img_shape)
scale = short_edge_length / 224.
return min(max(scale, min_scale), max_scale)
def create_figure(*args, margin=False, **kwargs) -> 'Figure':
"""Create a independent figure.
Different from the :func:`plt.figure`, the figure from this function won't
be managed by matplotlib. And it has
:obj:`matplotlib.backends.backend_agg.FigureCanvasAgg`, and therefore, you
can use the ``canvas`` attribute to get access the drawn image.
Args:
*args: All positional arguments of :class:`matplotlib.figure.Figure`.
margin: Whether to reserve the white edges of the figure.
Defaults to False.
**kwargs: All keyword arguments of :class:`matplotlib.figure.Figure`.
Return:
matplotlib.figure.Figure: The created figure.
"""
from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.figure import Figure
figure = Figure(*args, **kwargs)
FigureCanvasAgg(figure)
if not margin:
# remove white edges by set subplot margin
figure.subplots_adjust(left=0, right=1, bottom=0, top=1)
return figure