@interact(kernel_size=widgets.IntSlider(min=1, max=31, step=2, value=5),
threshold1=widgets.IntSlider(min=50, max=150, step=1, value=100),
threshold2=widgets.IntSlider(min=150, max=250, step=1, value=200),
k=widgets.IntSlider(min=2, max=10, step=1, value=3),
angle=widgets.IntSlider(min=0, max=360, step=1, value=45))
def interactive_image_processing(kernel_size, threshold1, threshold2, k, angle):
fig, axes = plt.subplots(2, 3, figsize=(18, 10))
# Original Image
axes[0, 0].imshow(image)
axes[0, 0].set_title("Original Image")
axes[0, 0].axis('off')
# Gaussian Blur
blurred_image = apply_gaussian_blur(image, kernel_size)
axes[0, 1].imshow(blurred_image)
axes[0, 1].set_title("Gaussian Blur")
axes[0, 1].axis('off')
# Canny Edge Detection
edges = apply_canny_edge(cv2.cvtColor(image, cv2.COLOR_RGB2GRAY), threshold1, threshold2)
axes[0, 2].imshow(edges, cmap='gray')
axes[0, 2].set_title("Canny Edge Detection")
axes[0, 2].axis('off')
# K-means Segmentation
segmented_image = apply_kmeans(image, k)
axes[1, 0].imshow(segmented_image)
axes[1, 0].set_title("K-means Segmentation")
axes[1, 0].axis('off')
# Rotation
rotated_image = apply_rotation(image, angle)
axes[1, 1].imshow(rotated_image)
axes[1, 1].set_title("Rotation")
axes[1, 1].axis('off')
# Histogram Equalization
equalized_image = apply_histogram_equalization(image)
axes[1, 2].imshow(equalized_image)
axes[1, 2].set_title("Histogram Equalization")
axes[1, 2].axis('off')
plt.show()