| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- # Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
- #
- # 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.
- import os
- import os.path as osp
- from PIL import Image
- import numpy as np
- import json
- class MyEncoder(json.JSONEncoder):
- # 调整json文件存储形式
- def default(self, obj):
- if isinstance(obj, np.integer):
- return int(obj)
- elif isinstance(obj, np.floating):
- return float(obj)
- elif isinstance(obj, np.ndarray):
- return obj.tolist()
- else:
- return super(MyEncoder, self).default(obj)
- def list_files(dirname):
- """ 列出目录下所有文件(包括所属的一级子目录下文件)
- Args:
- dirname: 目录路径
- """
- def filter_file(f):
- if f.startswith('.'):
- return True
- return False
- all_files = list()
- dirs = list()
- for f in os.listdir(dirname):
- if filter_file(f):
- continue
- if osp.isdir(osp.join(dirname, f)):
- dirs.append(f)
- else:
- all_files.append(f)
- for d in dirs:
- for f in os.listdir(osp.join(dirname, d)):
- if filter_file(f):
- continue
- if osp.isdir(osp.join(dirname, d, f)):
- continue
- all_files.append(osp.join(d, f))
- return all_files
- def is_pic(filename):
- """ 判断文件是否为图片格式
- Args:
- filename: 文件路径
- """
- suffixes = {'JPEG', 'jpeg', 'JPG', 'jpg', 'BMP', 'bmp', 'PNG', 'png'}
- suffix = filename.strip().split('.')[-1]
- if suffix not in suffixes:
- return False
- return True
- def replace_ext(filename, new_ext):
- """ 替换文件后缀
- Args:
- filename: 文件路径
- new_ext: 需要替换的新的后缀
- """
- items = filename.split(".")
- items[-1] = new_ext
- new_filename = ".".join(items)
- return new_filename
- def read_seg_ann(pngfile):
- """ 解析语义分割的标注png图片
- Args:
- pngfile: 包含标注信息的png图片路径
- """
- grt = np.asarray(Image.open(pngfile))
- labels = list(np.unique(grt))
- if 255 in labels:
- labels.remove(255)
- return labels
|