• 文档 >
  • 图像和视频的解码/编码
快捷方式

解码/编码图像和视频

torchvision.io 模块提供了用于解码和编码图像和视频的实用工具。

图像解码

Torchvision 目前支持解码 JPEG、PNG、WEBP、GIF、AVIF 和 HEIC 图像。JPEG 解码也可以在 CUDA GPU 上进行。

主要入口点是 `decode_image()` 函数,您可以将其用作 `PIL.Image.open()` 的替代方法。它会将图像直接解码为图像 Tensor,从而为您节省转换时间,并允许您在 Tensor 上原生运行变换/预处理。

from torchvision.io import decode_image

img = decode_image("path_to_image", mode="RGB")
img.dtype  # torch.uint8

# Or
raw_encoded_bytes = ...  # read encoded bytes from your file system
img = decode_image(raw_encoded_bytes, mode="RGB")

`decode_image()` 将自动检测图像格式,并调用相应的解码器(HEIC 和 AVIF 图像除外,详见 `decode_avif()` 和 `decode_heic()`)。您也可以使用更低级别的、特定于格式的解码器,它们可能更强大,例如,如果您想在 CUDA 上编码/解码 JPEG。

`decode_image`(input[, mode, ...])

将图像解码为 uint8 Tensor,可以从文件路径或原始编码字节中读取。

`decode_jpeg`(input[, mode, device, ...])

将 JPEG 图像解码为 3D RGB 或灰度 Tensor,可在 CPU 或 CUDA 上运行。

`decode_png`(input[, mode, apply_exif_orientation])

将 PNG 图像解码为 3 维 RGB 或灰度 Tensor。

`decode_webp`(input[, mode])

将 WEBP 图像解码为 3 维 RGB[A] Tensor。

`decode_avif`(input[, mode])

将 AVIF 图像解码为 3 维 RGB[A] Tensor。

`decode_heic`(input[, mode])

将 HEIC 图像解码为 3 维 RGB[A] Tensor。

`decode_gif`(input)

将 GIF 图像解码为 3 或 4 维 RGB Tensor。

`ImageReadMode`(value)

允许在解码时自动转换为 RGB、RGBA 等。

已弃用的解码函数

`read_image`(path[, mode, apply_exif_orientation])

[已弃用] 请改用 `decode_image()`。

图像编码

对于编码,支持 JPEG(CPU 和 CUDA)和 PNG。

`encode_jpeg`(input[, quality])

将 RGB Tensor 编码为原始编码的 JPEG 字节,可在 CPU 或 CUDA 上运行。

`write_jpeg`(input, filename[, quality])

将 CHW 布局的输入 Tensor 保存到 JPEG 文件。

`encode_png`(input[, compression_level])

将 CHW 布局的输入 Tensor 编码并返回其对应 PNG 文件的内容缓冲区。

`write_png`(input, filename[, compression_level])

将 CHW 布局的输入 Tensor(对于灰度图像为 HW)保存到 PNG 文件。

IO 操作

`read_file`(path)

以 uint8 1D Tensor 的形式返回文件的字节内容。

`write_file`(filename, data)

将 uint8 1D Tensor 的内容写入文件。

视频 - 已弃用

警告

已弃用:torchvision 的所有视频解码和编码功能从 0.22 版本开始已弃用,并将在 0.24 版本中移除。我们建议您迁移到 TorchCodec,我们将在其中整合 PyTorch 未来未来的解码/编码功能。

`read_video`(filename[, start_pts, end_pts, ...])

[已弃用] 从文件中读取视频,返回视频帧和音频帧。

`read_video_timestamps`(filename[, pts_unit])

[已弃用] 列出视频帧的时间戳。

`write_video`(filename, video_array, fps[, ...])

[已弃用] 将 [T, H, W, C] 格式的 4D Tensor 写入视频文件。

精细化视频 API

除了 `read_video` 函数外,我们还提供了一个高性能的底层 API,与 `read_video` 函数相比,该 API 提供了更精细化的控制。它在完全支持 torchscript 的同时实现了这一切。

`VideoReader`(src[, stream, num_threads])

[已弃用] 精细化视频读取 API。

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

为初学者和高级开发者提供深入的教程

查看教程

资源

查找开发资源并让您的问题得到解答

查看资源