jithenderchoudary's picture
Update app.py
5b94904 verified
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()