Skip to content

Commit af5cb00

Browse files
author
Siddhant Bansal
authored
Clean up and Document io.image enhancements (#3193)
* Update ImageReadMode error messages, add newline at the end of image_read_mode.h, replace define with const in image_read_mode.h, add documentation to ImageReadMode enum * Update readpng_cpu and readjpeg_cpu error messages * Update image.py documentation
1 parent 4cbe714 commit af5cb00

File tree

4 files changed

+30
-25
lines changed

4 files changed

+30
-25
lines changed

torchvision/csrc/io/image/cpu/readjpeg_cpu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ torch::Tensor decodeJPEG(const torch::Tensor& data, ImageReadMode mode) {
117117
*/
118118
default:
119119
jpeg_destroy_decompress(&cinfo);
120-
TORCH_CHECK(false, "Provided mode not supported");
120+
TORCH_CHECK(false, "The provided mode is not supported for JPEG files");
121121
}
122122

123123
jpeg_calc_output_dimensions(&cinfo);

torchvision/csrc/io/image/cpu/readpng_cpu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ torch::Tensor decodePNG(const torch::Tensor& data, ImageReadMode mode) {
143143
break;
144144
default:
145145
png_destroy_read_struct(&png_ptr, &info_ptr, nullptr);
146-
TORCH_CHECK(false, "Provided mode not supported");
146+
TORCH_CHECK(false, "The provided mode is not supported for PNG files");
147147
}
148148

149149
png_read_update_info(png_ptr, info_ptr);

torchvision/csrc/io/image/image_read_mode.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
/* Should be kept in-sync with Python ImageReadMode enum */
44
using ImageReadMode = int64_t;
5-
#define IMAGE_READ_MODE_UNCHANGED 0
6-
#define IMAGE_READ_MODE_GRAY 1
7-
#define IMAGE_READ_MODE_GRAY_ALPHA 2
8-
#define IMAGE_READ_MODE_RGB 3
9-
#define IMAGE_READ_MODE_RGB_ALPHA 4
5+
const ImageReadMode IMAGE_READ_MODE_UNCHANGED = 0;
6+
const ImageReadMode IMAGE_READ_MODE_GRAY = 1;
7+
const ImageReadMode IMAGE_READ_MODE_GRAY_ALPHA = 2;
8+
const ImageReadMode IMAGE_READ_MODE_RGB = 3;
9+
const ImageReadMode IMAGE_READ_MODE_RGB_ALPHA = 4;

torchvision/io/image.py

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@
5050

5151

5252
class ImageReadMode(Enum):
53+
"""
54+
Support for various modes while reading images.
55+
56+
Use `ImageReadMode.UNCHANGED` for loading the image as-is,
57+
`ImageReadMode.GRAY` for converting to grayscale,
58+
`ImageReadMode.GRAY_ALPHA` for grayscale with transparency,
59+
`ImageReadMode.RGB` for RGB and `ImageReadMode.RGB_ALPHA` for
60+
RGB with transparency.
61+
"""
5362
UNCHANGED = 0
5463
GRAY = 1
5564
GRAY_ALPHA = 2
@@ -94,11 +103,9 @@ def decode_png(input: torch.Tensor, mode: ImageReadMode = ImageReadMode.UNCHANGE
94103
input (Tensor[1]): a one dimensional uint8 tensor containing
95104
the raw bytes of the PNG image.
96105
mode (ImageReadMode): the read mode used for optionally
97-
converting the image. Use `ImageReadMode.UNCHANGED` for loading
98-
the image as-is, `ImageReadMode.GRAY` for converting to grayscale,
99-
`ImageReadMode.GRAY_ALPHA` for grayscale with transparency,
100-
`ImageReadMode.RGB` for RGB and `ImageReadMode.RGB_ALPHA` for
101-
RGB with transparency. Default: `ImageReadMode.UNCHANGED`
106+
converting the image. Default: `ImageReadMode.UNCHANGED`.
107+
See `ImageReadMode` class for more information on various
108+
available modes.
102109
103110
Returns:
104111
output (Tensor[image_channels, image_height, image_width])
@@ -159,9 +166,9 @@ def decode_jpeg(input: torch.Tensor, mode: ImageReadMode = ImageReadMode.UNCHANG
159166
input (Tensor[1]): a one dimensional uint8 tensor containing
160167
the raw bytes of the JPEG image.
161168
mode (ImageReadMode): the read mode used for optionally
162-
converting the image. Use `ImageReadMode.UNCHANGED` for loading
163-
the image as-is, `ImageReadMode.GRAY` for converting to grayscale
164-
and `ImageReadMode.RGB` for RGB. Default: `ImageReadMode.UNCHANGED`
169+
converting the image. Default: `ImageReadMode.UNCHANGED`.
170+
See `ImageReadMode` class for more information on various
171+
available modes.
165172
166173
Returns:
167174
output (Tensor[image_channels, image_height, image_width])
@@ -229,11 +236,10 @@ def decode_image(input: torch.Tensor, mode: ImageReadMode = ImageReadMode.UNCHAN
229236
a one dimensional uint8 tensor containing the raw bytes of the
230237
PNG or JPEG image.
231238
mode: ImageReadMode
232-
the read mode used for optionally converting the image. JPEG
233-
and PNG images have different permitted values. The default
234-
value is `ImageReadMode.UNCHANGED` and it keeps the image as-is.
235-
See `decode_jpeg()` and `decode_png()` for more information.
236-
Default: `ImageReadMode.UNCHANGED`
239+
the read mode used for optionally converting the image.
240+
Default: `ImageReadMode.UNCHANGED`.
241+
See `ImageReadMode` class for more information on various
242+
available modes.
237243
238244
Returns
239245
-------
@@ -254,11 +260,10 @@ def read_image(path: str, mode: ImageReadMode = ImageReadMode.UNCHANGED) -> torc
254260
path: str
255261
path of the JPEG or PNG image.
256262
mode: ImageReadMode
257-
the read mode used for optionally converting the image. JPEG
258-
and PNG images have different permitted values. The default
259-
value is `ImageReadMode.UNCHANGED` and it keeps the image as-is.
260-
See `decode_jpeg()` and `decode_png()` for more information.
261-
Default: `ImageReadMode.UNCHANGED`
263+
the read mode used for optionally converting the image.
264+
Default: `ImageReadMode.UNCHANGED`.
265+
See `ImageReadMode` class for more information on various
266+
available modes.
262267
263268
Returns
264269
-------

0 commit comments

Comments
 (0)