Overslaan naar inhoud

Referentie voor ultralytics/utils/patches.py

Opmerking

Dit bestand is beschikbaar op https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/utils/patches .py. Als je een probleem ziet, help het dan oplossen door een Pull Request 🛠️ bij te dragen. Bedankt 🙏!



ultralytics.utils.patches.imread(filename, flags=cv2.IMREAD_COLOR)

Een afbeelding uit een bestand lezen.

Parameters:

Naam Type Beschrijving Standaard
filename str

Pad naar het bestand dat gelezen moet worden.

vereist
flags int

Vlag die waarden van cv2.IMREAD_* kan aannemen. Staat standaard op cv2.IMREAD_COLOR.

IMREAD_COLOR

Retourneert:

Type Beschrijving
ndarray

Het gelezen beeld.

Broncode in ultralytics/utils/patches.py
def imread(filename: str, flags: int = cv2.IMREAD_COLOR):
    """
    Read an image from a file.

    Args:
        filename (str): Path to the file to read.
        flags (int, optional): Flag that can take values of cv2.IMREAD_*. Defaults to cv2.IMREAD_COLOR.

    Returns:
        (np.ndarray): The read image.
    """
    return cv2.imdecode(np.fromfile(filename, np.uint8), flags)



ultralytics.utils.patches.imwrite(filename, img, params=None)

Een afbeelding naar een bestand schrijven.

Parameters:

Naam Type Beschrijving Standaard
filename str

Pad naar het te schrijven bestand.

vereist
img ndarray

Afbeelding om te schrijven.

vereist
params list of ints

Extra parameters. Zie OpenCV documentatie.

None

Retourneert:

Type Beschrijving
bool

True als het bestand is geschreven, anders False.

Broncode in ultralytics/utils/patches.py
def imwrite(filename: str, img: np.ndarray, params=None):
    """
    Write an image to a file.

    Args:
        filename (str): Path to the file to write.
        img (np.ndarray): Image to write.
        params (list of ints, optional): Additional parameters. See OpenCV documentation.

    Returns:
        (bool): True if the file was written, False otherwise.
    """
    try:
        cv2.imencode(Path(filename).suffix, img, params)[1].tofile(filename)
        return True
    except Exception:
        return False



ultralytics.utils.patches.imshow(winname, mat)

Geeft een afbeelding weer in het opgegeven venster.

Parameters:

Naam Type Beschrijving Standaard
winname str

Naam van het venster.

vereist
mat ndarray

Afbeelding om te laten zien.

vereist
Broncode in ultralytics/utils/patches.py
def imshow(winname: str, mat: np.ndarray):
    """
    Displays an image in the specified window.

    Args:
        winname (str): Name of the window.
        mat (np.ndarray): Image to be shown.
    """
    _imshow(winname.encode("unicode_escape").decode(), mat)



ultralytics.utils.patches.torch_save(*args, use_dill=True, **kwargs)

Gebruik optioneel dill om lambda-functies te serialiseren waar pickle dat niet doet, en voeg robuustheid toe met 3 pogingen en exponentiële standoff in geval van mislukte opslag.

Parameters:

Naam Type Beschrijving Standaard
*args tuple

Positionele argumenten om door te geven aan torch.save.

()
use_dill bool

Of dill moet worden gebruikt voor serialisatie indien beschikbaar. Wordt standaard ingesteld op True.

True
**kwargs any

Trefwoordargumenten om door te geven aan torch.save.

{}
Broncode in ultralytics/utils/patches.py
def torch_save(*args, use_dill=True, **kwargs):
    """
    Optionally use dill to serialize lambda functions where pickle does not, adding robustness with 3 retries and
    exponential standoff in case of save failure.

    Args:
        *args (tuple): Positional arguments to pass to torch.save.
        use_dill (bool): Whether to try using dill for serialization if available. Defaults to True.
        **kwargs (any): Keyword arguments to pass to torch.save.
    """
    try:
        assert use_dill
        import dill as pickle
    except (AssertionError, ImportError):
        import pickle

    if "pickle_module" not in kwargs:
        kwargs["pickle_module"] = pickle

    for i in range(4):  # 3 retries
        try:
            return _torch_save(*args, **kwargs)
        except RuntimeError as e:  # unable to save, possibly waiting for device to flush or antivirus scan
            if i == 3:
                raise e
            time.sleep((2**i) / 2)  # exponential standoff: 0.5s, 1.0s, 2.0s





Aangemaakt 2023-11-12, Bijgewerkt 2024-05-08
Auteurs: Burhan-Q (1), glenn-jocher (3), Lachen-q (1)