Spaces:
Build error
Build error
import os | |
import cv2 | |
import base64 | |
import requests | |
import numpy as np | |
from tqdm import tqdm | |
from pathlib import Path | |
from zipfile import ZipFile | |
def download_and_unzip_model(root_dir:str, name:str, | |
url:str, file_size:int, unzip:bool = False): | |
''' | |
Checking model in model_path | |
download model if file not found | |
@params: | |
root_dir(str): The root directory of model. | |
name(str): The name of model. | |
url(str): The url of model. | |
file_size(int): The size of model. | |
unzip(bool): Unzip the model or not. | |
''' | |
Path(root_dir).mkdir(parents=True, exist_ok=True) | |
# check if model is already or not | |
print(f'Downloading {root_dir.split("/")[-1]} model, please wait.') | |
response = requests.get(url, stream=True) | |
progress = tqdm(response.iter_content(1024), | |
f'Downloading model', | |
total=file_size, unit='B', | |
unit_scale=True, unit_divisor=1024) | |
save_dir = f'{root_dir}/{name}' | |
with open(save_dir, 'wb') as f: | |
for data in progress: | |
f.write(data) | |
progress.update(len(data)) | |
print(f'Done downloading {root_dir.split("/")[-1]} model.') | |
# unzip model | |
if unzip: | |
with ZipFile(save_dir, 'r') as zip_obj: | |
zip_obj.extractall(root_dir) | |
print(f'Done unzip {root_dir.split("/")[-1]} model.') | |
os.remove(save_dir) | |
def encode_image2string(image): | |
image_list = cv2.imencode('.jpg', image)[1] | |
image_bytes = image_list.tobytes() | |
image_encoded = base64.b64encode(image_bytes) | |
return image_encoded | |
def decode_string2image(image_encoded): | |
jpg_original = base64.b64decode(image_encoded) | |
jpg_as_np = np.frombuffer(jpg_original, dtype=np.uint8) | |
image = cv2.imdecode(jpg_as_np, flags=1) | |
return image | |
def resize_image(image, size_percent): | |
''' | |
Resize an image so that its longest edge equals to the given size. | |
Args: | |
image(cv2.Image): The input image. | |
size_percent(int): The size of longest edge. | |
Returns: | |
image(cv2.Image): The output image. | |
''' | |
width = int(image.shape[1] * size_percent / 100) | |
height = int(image.shape[0] * size_percent / 100) | |
dim = (width, height) | |
# resize image | |
resized = cv2.resize(image, dim, interpolation = cv2.INTER_AREA) | |
return resized |