| #!/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()) |