Spaces:
Starting
Starting
| import base64 | |
| import io | |
| import numpy as np | |
| from PIL import Image, ImageEnhance | |
| def load_rgb_image(contents: bytes): | |
| return Image.open(io.BytesIO(contents)).convert("RGB") | |
| def preprocess_image(image: Image.Image): | |
| enhancer = ImageEnhance.Color(image) | |
| image = enhancer.enhance(0) | |
| enhancer = ImageEnhance.Contrast(image) | |
| image = enhancer.enhance(2) | |
| return crop_echo_panel(image) | |
| def crop_echo_panel(image: Image.Image): | |
| w, h = image.size | |
| if w <= 640: | |
| return image | |
| target_ratio = 16 / 9 | |
| current_ratio = w / h | |
| if current_ratio > target_ratio: | |
| new_w = int(h * target_ratio) | |
| crop_width = w - new_w | |
| right_cut = round(80 * (h / 1080)) | |
| left_cut = crop_width - right_cut | |
| image = image.crop((left_cut, 0, w - right_cut, h)) | |
| w, h = image.size | |
| left = w * (2 / 3) | |
| upper = 90 * (w / 1920) | |
| right = w | |
| lower = 540 * (w / 1920) | |
| upper = max(0, min(upper, h)) | |
| lower = max(0, min(lower, h)) | |
| return image.crop((left, upper, right, lower)) | |
| def encode_jpeg_base64(image: Image.Image): | |
| buffered = io.BytesIO() | |
| image.save(buffered, format="JPEG") | |
| return base64.b64encode(buffered.getvalue()).decode("utf-8") | |
| def to_ocr_array(image: Image.Image): | |
| return np.array(image) | |