| import base64 |
| from io import BytesIO |
| from PIL import Image |
| import numpy as np |
| from model import Model |
|
|
| def predict(package, image_base64: str, threshold: float, num_objects: int): |
| |
| |
| base64_split = image_base64.split(',')[1] |
| buf = BytesIO(base64.b64decode(base64_split)) |
|
|
| image = Image.open(buf) |
|
|
| |
| canvas = Image.new('RGB', image.size, (0, 0, 0)) |
|
|
| |
| rgb = np.array(canvas) |
| model : Model = package.get('model') |
| masks = model(image, threshold, num_objects) |
|
|
| for mask in masks: |
| fg = mask > 0.5 |
| rgb[fg] = 255 |
|
|
| return Image.fromarray(rgb) |