herrius's picture
Upload 259 files
32b542e
import io
from PIL import Image
import cv2
import numpy as np
try:
from petrel_client.client import Client
except ImportError as E:
"petrel_client.client cannot be imported"
pass
def pil_loader(img_str):
buff = io.BytesIO(img_str)
return Image.open(buff)
def cv2_loader(img_bytes):
# assert(img_bytes is not None)
img_mem_view = memoryview(img_bytes)
img_array = np.frombuffer(img_mem_view, np.uint8)
imgcv2=cv2.imdecode(img_array, cv2.IMREAD_COLOR)
imgcv2=cv2.cvtColor(imgcv2, cv2.COLOR_BGR2RGB)
return Image.fromarray(imgcv2)
class TCSLoader(object):
def __init__(self, conf_path):
self.client = Client(conf_path)
def __call__(self, fn):
try:
img_value_str = self.client.get(fn)
img = pil_loader(img_value_str)
except:
try:
img = cv2_loader(img_value_str)
except:
print('Read image failed ({})'.format(fn))
return None
else:
return img
else:
return img