# Path: piecewisecrf/datasets/cityscapes/cityscapes.py
# class CityscapesDataset(Dataset):
#     def __init__(self, train_dir=None, val_dir=None, test_dir=None):
#         super(CityscapesDataset, self).__init__(train_dir, val_dir, test_dir)
# 
#         self.labels = [
#             # name id trainId category catId hasInstances ignoreInEval color
#             Label('unlabeled', 0, 255, 'void', 0, False, True, (0, 0, 0)),
#             Label('ego vehicle', 1, 255, 'void', 0, False, True, (0, 0, 0)),
#             Label('rectification border', 2, 255, 'void', 0, False, True, (0, 0, 0)),
#             Label('out of roi', 3, 255, 'void', 0, False, True, (0, 0, 0)),
#             Label('static', 4, 255, 'void', 0, False, True, (0, 0, 0)),
#             Label('dynamic', 5, 255, 'void', 0, False, True, (111, 74, 0)),
#             Label('ground', 6, 255, 'void', 0, False, True, (81, 0, 81)),
#             Label('road', 7, 0, 'flat', 1, False, False, (128, 64, 128)),
#             Label('sidewalk', 8, 1, 'flat', 1, False, False, (244, 35, 232)),
#             Label('parking', 9, 255, 'flat', 1, False, True, (250, 170, 160)),
#             Label('rail track', 10, 255, 'flat', 1, False, True, (230, 150, 140)),
#             Label('building', 11, 2, 'construction', 2, False, False, (70, 70, 70)),
#             Label('wall', 12, 3, 'construction', 2, False, False, (102, 102, 156)),
#             Label('fence', 13, 4, 'construction', 2, False, False, (190, 153, 153)),
#             Label('guard rail', 14, 255, 'construction', 2, False, True, (180, 165, 180)),
#             Label('bridge', 15, 255, 'construction', 2, False, True, (150, 100, 100)),
#             Label('tunnel', 16, 255, 'construction', 2, False, True, (150, 120, 90)),
#             Label('pole', 17, 5, 'object', 3, False, False, (153, 153, 153)),
#             Label('polegroup', 18, 255, 'object', 3, False, True, (153, 153, 153)),
#             Label('traffic light', 19, 6, 'object', 3, False, False, (250, 170, 30)),
#             Label('traffic sign', 20, 7, 'object', 3, False, False, (220, 220, 0)),
#             Label('vegetation', 21, 8, 'nature', 4, False, False, (107, 142, 35)),
#             Label('terrain', 22, 9, 'nature', 4, False, False, (152, 251, 152)),
#             Label('sky', 23, 10, 'sky', 5, False, False, (70, 130, 180)),
#             Label('person', 24, 11, 'human', 6, True, False, (220, 20, 60)),
#             Label('rider', 25, 12, 'human', 6, True, False, (255, 0, 0)),
#             Label('car', 26, 13, 'vehicle', 7, True, False, (0, 0, 142)),
#             Label('truck', 27, 14, 'vehicle', 7, True, False, (0, 0, 70)),
#             Label('bus', 28, 15, 'vehicle', 7, True, False, (0, 60, 100)),
#             Label('caravan', 29, 255, 'vehicle', 7, True, True, (0, 0, 90)),
#             Label('trailer', 30, 255, 'vehicle', 7, True, True, (0, 0, 110)),
#             Label('train', 31, 16, 'vehicle', 7, True, False, (0, 80, 100)),
#             Label('motorcycle', 32, 17, 'vehicle', 7, True, False, (0, 0, 230)),
#             Label('bicycle', 33, 18, 'vehicle', 7, True, False, (119, 11, 32)),
#             Label('license plate', -1, -1, 'vehicle', 7, False, True, (0, 0, 142)),
#         ]
# 
#         self.classes = list(range(19))
# 
#         self.create_collections()


import argparse
import os
import tqdm
import skimage
import skimage.data
import skimage.transform
import numpy as np
import piecewisecrf.helpers.io as io
from piecewisecrf.datasets.cityscapes.cityscapes import CityscapesDataset
    for city in cities:
        image_city_dir = os.path.join(image_input_dir, city)
        files.extend([(os.path.join(image_city_dir, x), x) for x in next(os.walk(image_city_dir))[2]])

    for file_path, file_name in tqdm.tqdm(files):
        img = skimage.data.load(file_path)
        file_prefix = file_name[0:file_name.index('.')]
        if replacei:
            file_prefix = file_prefix.replace(replacei[0], replacei[1])

        if not onlyresize:
            skimage.io.imsave(os.path.join(image_dest_dir, '{}.png'.format(file_prefix)), img)
            skimage.io.imsave(os.path.join(image_dest_ppm_dir, '{}.ppm'.format(file_prefix)), img)

        if resize:
            img = skimage.transform.resize(img, (resize[1], resize[0]), order=3)
            skimage.io.imsave(os.path.join(image_dest_dir_resized, '{}.png'.format(file_prefix)), img)
            skimage.io.imsave(os.path.join(image_dest_ppm_dir_resized, '{}.ppm'.format(file_prefix)), img)

    print("Creating label files")
    cities = next(os.walk(label_input_dir))[1]
    files = []
    for city in cities:
        label_city_dir = os.path.join(label_input_dir, city)
        if containsl:
            files.extend([(os.path.join(label_city_dir, x), x) for x in next(os.walk(label_city_dir))[2]
                          if containsl[0] in x])
        else:
            files.extend([(os.path.join(label_city_dir, x), x) for x in next(os.walk(label_city_dir))[2]])


# Path: piecewisecrf/datasets/cityscapes/cityscapes.py
# class CityscapesDataset(Dataset):
#     def __init__(self, train_dir=None, val_dir=None, test_dir=None):
#         super(CityscapesDataset, self).__init__(train_dir, val_dir, test_dir)
# 
#         self.labels = [
#             # name id trainId category catId hasInstances ignoreInEval color
#             Label('unlabeled', 0, 255, 'void', 0, False, True, (0, 0, 0)),
#             Label('ego vehicle', 1, 255, 'void', 0, False, True, (0, 0, 0)),
#             Label('rectification border', 2, 255, 'void', 0, False, True, (0, 0, 0)),
#             Label('out of roi', 3, 255, 'void', 0, False, True, (0, 0, 0)),
#             Label('static', 4, 255, 'void', 0, False, True, (0, 0, 0)),
#             Label('dynamic', 5, 255, 'void', 0, False, True, (111, 74, 0)),
#             Label('ground', 6, 255, 'void', 0, False, True, (81, 0, 81)),
#             Label('road', 7, 0, 'flat', 1, False, False, (128, 64, 128)),
#             Label('sidewalk', 8, 1, 'flat', 1, False, False, (244, 35, 232)),
#             Label('parking', 9, 255, 'flat', 1, False, True, (250, 170, 160)),
#             Label('rail track', 10, 255, 'flat', 1, False, True, (230, 150, 140)),
#             Label('building', 11, 2, 'construction', 2, False, False, (70, 70, 70)),
#             Label('wall', 12, 3, 'construction', 2, False, False, (102, 102, 156)),
#             Label('fence', 13, 4, 'construction', 2, False, False, (190, 153, 153)),
#             Label('guard rail', 14, 255, 'construction', 2, False, True, (180, 165, 180)),
#             Label('bridge', 15, 255, 'construction', 2, False, True, (150, 100, 100)),
#             Label('tunnel', 16, 255, 'construction', 2, False, True, (150, 120, 90)),
#             Label('pole', 17, 5, 'object', 3, False, False, (153, 153, 153)),
#             Label('polegroup', 18, 255, 'object', 3, False, True, (153, 153, 153)),
#             Label('traffic light', 19, 6, 'object', 3, False, False, (250, 170, 30)),
#             Label('traffic sign', 20, 7, 'object', 3, False, False, (220, 220, 0)),
#             Label('vegetation', 21, 8, 'nature', 4, False, False, (107, 142, 35)),
#             Label('terrain', 22, 9, 'nature', 4, False, False, (152, 251, 152)),
#             Label('sky', 23, 10, 'sky', 5, False, False, (70, 130, 180)),
#             Label('person', 24, 11, 'human', 6, True, False, (220, 20, 60)),
#             Label('rider', 25, 12, 'human', 6, True, False, (255, 0, 0)),
#             Label('car', 26, 13, 'vehicle', 7, True, False, (0, 0, 142)),
#             Label('truck', 27, 14, 'vehicle', 7, True, False, (0, 0, 70)),
#             Label('bus', 28, 15, 'vehicle', 7, True, False, (0, 60, 100)),
#             Label('caravan', 29, 255, 'vehicle', 7, True, True, (0, 0, 90)),
#             Label('trailer', 30, 255, 'vehicle', 7, True, True, (0, 0, 110)),
#             Label('train', 31, 16, 'vehicle', 7, True, False, (0, 80, 100)),
#             Label('motorcycle', 32, 17, 'vehicle', 7, True, False, (0, 0, 230)),
#             Label('bicycle', 33, 18, 'vehicle', 7, True, False, (119, 11, 32)),
#             Label('license plate', -1, -1, 'vehicle', 7, False, True, (0, 0, 142)),
#         ]
# 
#         self.classes = list(range(19))
# 
#         self.create_collections()


# Path: piecewisecrf/datasets/cityscapes/prepare_dataset_files.py
import argparse
import os
import tqdm
import skimage
import skimage.data
import skimage.transform
import numpy as np
import piecewisecrf.helpers.io as io
from piecewisecrf.datasets.cityscapes.cityscapes import CityscapesDataset

    for city in cities:
        image_city_dir = os.path.join(image_input_dir, city)
        files.extend([(os.path.join(image_city_dir, x), x) for x in next(os.walk(image_city_dir))[2]])

    for file_path, file_name in tqdm.tqdm(files):
        img = skimage.data.load(file_path)
        file_prefix = file_name[0:file_name.index('.')]
        if replacei:
            file_prefix = file_prefix.replace(replacei[0], replacei[1])

        if not onlyresize:
            skimage.io.imsave(os.path.join(image_dest_dir, '{}.png'.format(file_prefix)), img)
            skimage.io.imsave(os.path.join(image_dest_ppm_dir, '{}.ppm'.format(file_prefix)), img)

        if resize:
            img = skimage.transform.resize(img, (resize[1], resize[0]), order=3)
            skimage.io.imsave(os.path.join(image_dest_dir_resized, '{}.png'.format(file_prefix)), img)
            skimage.io.imsave(os.path.join(image_dest_ppm_dir_resized, '{}.ppm'.format(file_prefix)), img)

    print("Creating label files")
    cities = next(os.walk(label_input_dir))[1]
    files = []
    for city in cities:
        label_city_dir = os.path.join(label_input_dir, city)
        if containsl:
            files.extend([(os.path.join(label_city_dir, x), x) for x in next(os.walk(label_city_dir))[2]
                          if containsl[0] in x])
        else:
            files.extend([(os.path.join(label_city_dir, x), x) for x in next(os.walk(label_city_dir))[2]])


    dataset = CityscapesDataset()