import numpy as np from skimage.metrics import structural_similarity as ssim import gradio as gr import cv2 # Function to remove text from image (placeholder implementation) def remove_text(image): # Placeholder implementation # Implement your own text removal algorithm here processed_image = image.copy() # Your text removal logic goes here return processed_image # Function to calculate SSIM between two images def calculate_similarity(img1, img2): if len(img1.shape) == 2: img1 = cv2.cvtColor(img1, cv2.COLOR_GRAY2RGB) if len(img2.shape) == 2: img2 = cv2.cvtColor(img2, cv2.COLOR_GRAY2RGB) max_height = max(img1.shape[0], img2.shape[0]) max_width = max(img1.shape[1], img2.shape[1]) img1_resized = cv2.resize(img1, (max_width, max_height)) img2_resized = cv2.resize(img2, (max_width, max_height)) # Calculate similarity score based on SSIM ssim_score = ssim(img1_resized, img2_resized, win_size=3, multichannel=True) return ssim_score # Rest of the code remains the same def image_similarity(img1, img2): img1 = img1.astype(np.uint8) img2 = img2.astype(np.uint8) # Remove text from images img1_processed = remove_text(img1) img2_processed = remove_text(img2) # Calculate similarity score based on SSIM ssim_score = calculate_similarity(img1, img2) # Calculate similarity score after text removal additional_score = calculate_similarity(img1_processed, img2_processed) result = f"SSIM Score: {ssim_score:.4f}\nAdditional Score (after text removal): {additional_score:.4f}" return result iface = gr.Interface( fn=image_similarity, inputs=[ gr.inputs.Image(type="numpy", label="Image 1"), gr.inputs.Image(type="numpy", label="Image 2") ], outputs="text", title="Image Similarity Calculator", description="Upload two images to compute their similarity." ) iface.launch()