File size: 1,322 Bytes
41e3185 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import argparse
import glob
import os
from typing import List
import numpy as np
from PIL import Image
def get_arguments() -> argparse.Namespace:
"""
parse all the arguments from command line inteface
return a list of parsed arguments
"""
parser = argparse.ArgumentParser(description="convert np.array to images.")
parser.add_argument(
"dir",
type=str,
help="path to a directory containing arrays you want to convert",
)
return parser.parse_args()
def convert_arr2img(arr: np.ndarray, palette: List[int]) -> Image.Image:
"""
Args:
arr: 1d array(T, )
palette: color palette
"""
arr = arr.astype(np.uint8)
arr = np.tile(arr, (100, 1))
img = Image.fromarray(arr)
img = img.convert("P")
img.putpalette(palette)
return img
def main() -> None:
args = get_arguments()
voc = Image.open("./imgs/voc_sample.png")
voc = voc.convert("P")
palette = voc.getpalette()
arr_paths = glob.glob(os.path.join(args.dir, "*.npy"))
for path in arr_paths:
name = os.path.basename(path)[:-4] # remove .npy
arr = np.load(path)
img = convert_arr2img(arr, palette)
img.save(os.path.join(args.dir, name + ".png"))
print("Done")
if __name__ == "__main__":
main()
|