# ------------------------------------------------------------------------------ # Copyright (c) Microsoft # Licensed under the MIT License. # Written by Bin Xiao (Bin.Xiao@microsoft.com) # ------------------------------------------------------------------------------ from __future__ import absolute_import from __future__ import division from __future__ import print_function import os import zipfile import xml.etree.ElementTree as ET import cv2 import numpy as np _im_zfile = [] _xml_path_zip = [] _xml_zfile = [] def imread(filename, flags=cv2.IMREAD_COLOR): global _im_zfile path = filename pos_at = path.index('@') if pos_at == -1: print("character '@' is not found from the given path '%s'"%(path)) assert 0 path_zip = path[0: pos_at] path_img = path[pos_at + 2:] if not os.path.isfile(path_zip): print("zip file '%s' is not found"%(path_zip)) assert 0 for i in range(len(_im_zfile)): if _im_zfile[i]['path'] == path_zip: data = _im_zfile[i]['zipfile'].read(path_img) return cv2.imdecode(np.frombuffer(data, np.uint8), flags) _im_zfile.append({ 'path': path_zip, 'zipfile': zipfile.ZipFile(path_zip, 'r') }) data = _im_zfile[-1]['zipfile'].read(path_img) return cv2.imdecode(np.frombuffer(data, np.uint8), flags) def xmlread(filename): global _xml_path_zip global _xml_zfile path = filename pos_at = path.index('@') if pos_at == -1: print("character '@' is not found from the given path '%s'"%(path)) assert 0 path_zip = path[0: pos_at] path_xml = path[pos_at + 2:] if not os.path.isfile(path_zip): print("zip file '%s' is not found"%(path_zip)) assert 0 for i in xrange(len(_xml_path_zip)): if _xml_path_zip[i] == path_zip: data = _xml_zfile[i].open(path_xml) return ET.fromstring(data.read()) _xml_path_zip.append(path_zip) print("read new xml file '%s'"%(path_zip)) _xml_zfile.append(zipfile.ZipFile(path_zip, 'r')) data = _xml_zfile[-1].open(path_xml) return ET.fromstring(data.read())