cutcutcodec.core.io.read_image.read_image

cutcutcodec.core.io.read_image.read_image(filename: Path | str | bytes) tuple[Tensor, Colorspace][source]

Read the image and make it compatible with Video Frame.

Parameters

filenamepathlike

The pathlike of the image file.

Returns

imagetorch.Tensor

The image in float32 of shape (height, width, channels).

colorspaceColorspace

The color space in which the image is defined. No conversion performed.

Raises

cutcutcodec.core.exceptions.DecodeError

If it fails to read the image.

Notes

Does not care about colorspace, no conversions performed.

Examples

>>> from cutcutcodec.core.io.read_image import read_image
>>> from cutcutcodec.utils import get_project_root
>>> for file in sorted((get_project_root() / "media" / "image").glob("image.*")):
...     image, colorspace = read_image(file)
...     print(f"{file.name}: {image.shape}, {colorspace}")
...
image.avif: torch.Size([64, 64, 3]), Colorspace("y'pbpr", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.bmp: torch.Size([64, 64, 3]), Colorspace("r'g'b'", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.exr: torch.Size([64, 64, 3]), Colorspace("r'g'b'", 'bt709', 'linear')
image.heic: torch.Size([64, 64, 3]), Colorspace("y'pbpr", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.jp2: torch.Size([64, 64, 3]), Colorspace("r'g'b'", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.jpg: torch.Size([64, 64, 3]), Colorspace("y'pbpr", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.kra: torch.Size([64, 64, 3]), Colorspace("r'g'b'", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.pbm: torch.Size([64, 64, 1]), Colorspace("y'pbpr", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.pgm: torch.Size([64, 64, 1]), Colorspace("y'pbpr", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.png: torch.Size([64, 64, 4]), Colorspace("r'g'b'", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.pnm: torch.Size([64, 64, 3]), Colorspace("r'g'b'", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.ppm: torch.Size([64, 64, 3]), Colorspace("r'g'b'", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.psd: torch.Size([64, 64, 3]), Colorspace("r'g'b'", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.ras: torch.Size([64, 64, 3]), Colorspace("r'g'b'", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.sgi: torch.Size([64, 64, 3]), Colorspace("r'g'b'", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.tiff: torch.Size([64, 64, 3]), Colorspace("r'g'b'", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.webp: torch.Size([64, 64, 3]), Colorspace("y'pbpr", 'bt709', 'iec61966-2-1, iec61966_2_1')
image.xbm: torch.Size([64, 64, 1]), Colorspace("y'pbpr", 'bt709', 'iec61966-2-1, iec61966_2_1')