Spaces:
Build error
Build error
| import cv2 | |
| import numpy as np | |
| import gradio as gr | |
| def compare_images(original_image, adjusted_image): | |
| # Check if images are loaded correctly | |
| if original_image is None or adjusted_image is None: | |
| return "Error: One or both images could not be loaded.", None | |
| # Resize adjusted image to match original image dimensions | |
| original_image_resized = cv2.resize(original_image, (adjusted_image.shape[1], adjusted_image.shape[0])) | |
| # Step 1: Compare Dimensions | |
| original_height, original_width = original_image.shape[:2] | |
| adjusted_height, adjusted_width = adjusted_image.shape[:2] | |
| dimension_match = (original_height == adjusted_height) and (original_width == adjusted_width) | |
| # Step 2: Compare Brightness | |
| # Convert images to grayscale | |
| original_gray = cv2.cvtColor(original_image_resized, cv2.COLOR_BGR2GRAY) | |
| adjusted_gray = cv2.cvtColor(adjusted_image, cv2.COLOR_BGR2GRAY) | |
| # Calculate average brightness | |
| original_brightness = np.mean(original_gray) | |
| adjusted_brightness = np.mean(adjusted_gray) | |
| brightness_diff = abs(original_brightness - adjusted_brightness) | |
| brightness_match = brightness_diff < 10 # Allow small tolerance | |
| # Step 3: Highlight Differences | |
| # Subtract images to find differences | |
| difference = cv2.absdiff(original_gray, adjusted_gray) | |
| _, threshold_diff = cv2.threshold(difference, 30, 255, cv2.THRESH_BINARY) | |
| # Prepare result summary | |
| comparison_result = { | |
| "Dimension Match": "Yes" if dimension_match else "No", | |
| "Original Dimensions": f"{original_width}x{original_height}", | |
| "Adjusted Dimensions": f"{adjusted_width}x{adjusted_height}", | |
| "Brightness Match": "Yes" if brightness_match else "No", | |
| "Original Brightness": f"{original_brightness:.2f}", | |
| "Adjusted Brightness": f"{adjusted_brightness:.2f}", | |
| "Brightness Difference": f"{brightness_diff:.2f}", | |
| } | |
| return comparison_result, threshold_diff | |
| # Gradio interface | |
| iface = gr.Interface( | |
| fn=compare_images, | |
| inputs=[ | |
| gr.Image(type="numpy", label="Original Image"), | |
| gr.Image(type="numpy", label="Adjusted Image") | |
| ], | |
| outputs=[ | |
| gr.JSON(label="Comparison Result"), | |
| gr.Image(type="numpy", label="Difference Image") | |
| ], | |
| title="Image Comparison Tool", | |
| description="Upload two images to compare dimensions, brightness, and highlight differences." | |
| ) | |
| iface.launch() | |