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()