图像和视频的解码/编码¶
torchvision.io
模块提供用于解码和编码图像和视频的实用程序。
图像解码¶
Torchvision 目前支持解码 JPEG、PNG、WEBP 和 GIF 图像。JPEG 解码也可以在 CUDA GPU 上完成。
主要入口点是 decode_image()
函数,您可以将其用作 PIL.Image.open()
的替代方案。它会将图像直接解码为图像张量,从而节省转换并允许您在张量上本地运行转换/预处理。
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()
将自动检测图像格式,并调用相应的解码器。您还可以使用更低级的特定格式解码器,这些解码器可能功能更强大,例如,如果您想在 CUDA 上编码/解码 JPEG。
|
将图像从路径或原始编码字节解码为 uint8 张量。 |
|
将 JPEG 图像解码为 3D RGB 或灰度张量,在 CPU 或 CUDA 上。 |
|
获取 CHW 布局中的输入张量,并返回包含其对应 PNG 文件内容的缓冲区。 |
|
将 GIF 图像解码为 3 维或 4 维 RGB 张量。 |
|
将 WEBP 图像解码为 3 维 RGB[A] 张量。 |
|
允许在解码时自动转换为 RGB、RGBA 等。 |
已过时的解码函数
|
[已过时] 使用 |
图像编码¶
对于编码,支持 JPEG(cpu 和 CUDA)和 PNG。
|
将 RGB 张量编码为原始编码的 jpeg 字节,在 CPU 或 CUDA 上。 |
|
获取 CHW 布局中的输入张量,并将其保存到 JPEG 文件中。 |
|
获取 CHW 布局中的输入张量,并返回包含其对应 PNG 文件内容的缓冲区。 |
|
获取 CHW 布局中的输入张量(或灰度图像情况下的 HW 布局),并将其保存到 PNG 文件中。 |
IO 操作¶
|
将文件的字节内容作为 uint8 1D 张量返回。 |
|
将 uint8 1D 张量的内容写入文件。 |
视频¶
警告
Torchvision 通过下面列出的不同 API 支持视频解码,其中一些 API 仍处于测试阶段。在不久的将来,我们打算将 PyTorch 的视频解码功能集中到 torchcodec 项目中。我们鼓励您尝试并分享您的反馈,因为 torchvision 视频解码器最终将被弃用。
|
从文件中读取视频,同时返回视频帧和音频帧 |
|
列出视频帧的时间戳。 |
|
将 [T, H, W, C] 格式的 4D 张量写入视频文件 |
细粒度视频 API
除了 read_video
函数之外,我们还提供了一个高性能的低级 API,与 read_video
函数相比,它可以提供更细粒度的控制。它在完全支持 torchscript 的同时实现了这一切。
|
细粒度视频读取 API。 |