Spaces:
Sleeping
Sleeping
from PIL import Image | |
import cv2 | |
import numpy as np | |
def resize_if_needed(image): | |
width, height = image.size | |
if width < 50 or height < 50: | |
scale = max(70 / width, 70 / height) | |
elif width > 16000 or height > 16000: | |
scale = min(16000 / width, 16000 / height) | |
else: | |
return image | |
return image.resize((int(width * scale), int(height * scale)), Image.LANCZOS) | |
def center_on_white_background(image): | |
width, height = image.size | |
if width < 150 and height < 50: | |
background = Image.new('RGB', (150, 150), (255, 255, 255)) | |
x, y = (150 - width) // 2, (150 - height) // 2 | |
background.paste(image, (x, y)) | |
return background | |
return image | |
def all_cropped_images_to_one_image(cropped_images, separator_image_path): | |
separator_image = Image.open(separator_image_path) | |
separator_height = separator_image.height | |
total_height = sum(img.height for img in cropped_images) + (len(cropped_images) - 1) * separator_height | |
print("Total Height:", total_height) | |
max_width = max(max(img.width for img in cropped_images), separator_image.width) | |
print("Max Width:", max_width) | |
combined_image = Image.new('RGB', (max_width, total_height)) | |
y = 0 | |
print(cropped_images, "before combine") | |
for i, img in enumerate(cropped_images): | |
combined_image.paste(img, (0, y)) | |
y += img.height | |
if i < len(cropped_images) - 1: | |
combined_image.paste(separator_image, (0, y)) | |
y += separator_height | |
combined_image.save("combinedImage.png") | |
return combined_image | |
def preprocess_image(image): | |
gray = cv2.cvtColor(np.array(image), cv2.COLOR_BGR2GRAY) | |
_, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) | |
return Image.fromarray(binary) |