sqfoo's picture
Upload 99 files
6021dd1 verified
# 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