File size: 1,135 Bytes
6021dd1 |
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 |
# File to deal read and write the .mask extensions
import zlib
import numpy as np
from concurrent.futures import ThreadPoolExecutor, wait
_executor_pool = ThreadPoolExecutor(max_workers=16)
def read_mask_file(filepath, out):
"""Load mask file to numpy array
Parameters
----------
filepath : str
out : np.ndarray
Returns
-------
"""
f = open(filepath, 'rb')
dat = zlib.decompress(f.read())
out[:] = np.frombuffer(dat, dtype=bool).reshape((480, 480))
f.close()
def save_mask_file(npy_mask, filepath):
compressed_data = zlib.compress(npy_mask.tobytes(), 2)
f = open(filepath, "wb")
f.write(compressed_data)
f.close()
def quick_read_masks(path_list):
num = len(path_list)
read_storage = np.empty((num, 480, 480), dtype=bool)
# for i in range(num):
# read_storage[i] = read_mask_file(path_list[i])
future_objs = []
for i in range(num):
obj = _executor_pool.submit(read_mask_file, path_list[i], read_storage[i])
future_objs.append(obj)
wait(future_objs)
ret = read_storage.reshape((num, 1, 480, 480))
return ret
|