| from PIL import Image |
| from transformers import pipeline |
| import base64 |
| import requests |
| import io |
| import numpy as np |
| import os |
|
|
| def convert_img_base64(img): |
| with open(img, 'rb') as file: |
| base64_image = base64.b64encode(file.read()) |
| return base64_image |
|
|
| class DepthEstimation(): |
| def __init__(self, img_base64): |
| self.img_base64 = img_base64 |
|
|
| def convert_from_base64(self): |
| image_data = base64.b64decode(self.img_base64) |
| image = Image.open(io.BytesIO(image_data)) |
| return image |
|
|
| def run_depth(self): |
| image_data = self.convert_from_base64() |
| |
| pipe = pipeline("depth-estimation", model="depth-anything/Depth-Anything-V2-Base-hf") |
| depth = pipe(image_data) |
| depth_map = depth['predicted_depth'] |
| |
| depth_map = depth_map.squeeze().cpu().numpy() |
| depth_map = np.uint8(depth_map / depth_map.max() * 255) |
| |
| depth_image = Image.fromarray(depth_map) |
| |
| return depth_image |