def collect(target, output='output.png', per_subdir=False, size='128x128', interpolation='INTER_LINEAR', keep_aspect=False, space='0', space_color='black', tile_num=0, limit=False, imgcat=False, progress=False):
filename_list = []
if (per_subdir):
print("Create images per subdir. `--output` option is ignored.")
find_all_files_per_subdir(
target, size, interpolation, keep_aspect, space, space_color, tile_num, limit, imgcat, progress)
return
else:
if (os.path.isdir(target)):
for filename in find_all_files(target):
filename_list.append(filename)
if limit:
limit = int(limit)
filename_list = filename_list[0:limit]
print("files:", len(filename_list))
if (tile_num == 0):
tile_num = int(math.ceil(math.sqrt(len(filename_list))))
print("horizontal tile number:", tile_num)
space = int(space)
if isinstance(space_color, string_types):
space_color = webcolors.name_to_rgb(space_color)
interpolation = getattr(cv2, interpolation, 1)
image_list = []
for filename in tqdm(filename_list, desc='Loading images', disable=(not progress)):
img = cv2.imread(filename)
resize_x, resize_y = int(size.split('x')[0]), int(size.split('x')[1])
if keep_aspect:
part_img = resize_keep_aspect(img, resize_x, resize_y, space_color, interpolation=interpolation)
else:
part_img = cv2.resize(img, (resize_x, resize_y), interpolation=interpolation)
if space > 0:
part_img = padding_blank(part_img, space, space, 0, 0, space_color)
image_list.append(part_img)
horizontal_image_list = []
for horizontal in chunks(image_list, tile_num):
while (len(horizontal) < tile_num):
height, width = horizontal[0].shape[:2]
horizontal.append(create_blank(height, width, space_color))
horizontal_image_list.append(cv2.hconcat(horizontal))
result_img = cv2.vconcat(horizontal_image_list)
if space > 0:
result_img = padding_blank(result_img, 0, 0, space, space, space_color)
stdout.write(b'Saving... ')
stdout.flush()
if cv2.imwrite(output, result_img):
stdout.write(b'\rSaved: %s\n' % output.encode('utf8'))
else:
stdout.write(b'\rError: Failed to save %s\n' % output.encode('utf8'))
sys.exit(1)
if imgcat:
imgcat_for_iTerm2(output)
评论列表
文章目录