| #!/usr/bin/env python3 | |
| # Copyright 2022 The IREE Authors | |
| # | |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| # See https://llvm.org/LICENSE.txt for license information. | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| # This script converts an image into a 28x28 grayscale f32 buffer. | |
| # Usage: | |
| # cat image.png | python3 convert_image.py > converted_image.bin | |
| import sys | |
| from PIL import Image | |
| import numpy as np | |
| # Read image from stdin (in any format supported by PIL). | |
| with Image.open(sys.stdin.buffer) as color_img: | |
| # Resize to 28x28, matching what the program expects. | |
| resized_color_img = color_img.resize((28, 28)) | |
| # Convert to grayscale. | |
| grayscale_img = resized_color_img.convert("L") | |
| # Rescale to a float32 in range [0.0, 1.0]. | |
| grayscale_arr = np.array(grayscale_img) | |
| grayscale_arr_f32 = grayscale_arr.astype(np.float32) / 255.0 | |
| # Write bytes back out to stdout. | |
| sys.stdout.buffer.write(grayscale_arr_f32.tobytes()) |