05360171创建于 2022年3月18日历史提交
# Copyright 2021 Huawei Technologies Co., Ltd

#

# Licensed under the Apache License, Version 2.0 (the "License");

# you may not use this file except in compliance with the License.

# You may obtain a copy of the License at

#

#     http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.



from __future__ import print_function, absolute_import, division

import os, glob, sys



# cityscapes imports

from cityscapesscripts.helpers.csHelpers import printError

from cityscapesscripts.preparation.json2instanceImg import json2instanceImg





# The main method

def main(data_path):

    # Where to look for Cityscapes

    cityscapesPath = data_path

    # how to search for all ground truth

    searchFine   = os.path.join( cityscapesPath , "gtFine"   , "*" , "*" , "*_gt*_polygons.json" )

    searchCoarse = os.path.join( cityscapesPath , "gtCoarse" , "*" , "*" , "*_gt*_polygons.json" )



    # search files

    filesFine = glob.glob( searchFine )

    filesFine.sort()

    filesCoarse = glob.glob( searchCoarse )

    filesCoarse.sort()



    # concatenate fine and coarse

    files = filesFine + filesCoarse

    # files = filesFine # use this line if fine is enough for now.



    # quit if we did not find anything

    if not files:

        printError( "Did not find any files. Please consult the README." )



    # a bit verbose

    print("Processing {} annotation files".format(len(files)))



    # iterate through files

    progress = 0

    print("Progress: {:>3} %".format( progress * 100 / len(files) ), end=' ')

    for f in files:

        # create the output filename

        dst = f.replace( "_polygons.json" , "_instanceTrainIds.png" )



        # do the conversion

        try:

            json2instanceImg( f , dst , "trainIds" )

        except:

            print("Failed to convert: {}".format(f))

            raise



        # status

        progress += 1

        print("\rProgress: {:>3} %".format( progress * 100 / len(files) ), end=' ')

        sys.stdout.flush()





# call the main

if __name__ == "__main__":

    data_path = sys.argv[1]

    main(data_path)