import cv2
import numpy as np
import matplotlib.pyplot as plt
def augment_image(image):
print("Performing image augmentation...")
# Rotation
rows, cols = image.shape[:2]
M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1)
rotated = cv2.warpAffine(image, M, (cols, rows))
# Flipping
flipped = cv2.flip(image, 1) # 1 for horizontal flip
# Brightness adjustment
bright = cv2.convertScaleAbs(image, alpha=1.5, beta=0)
# Add noise
noise = np.random.normal(0, 25, image.shape).astype(np.uint8)
noisy = cv2.add(image, noise)
print("Augmentation complete.")
return rotated, flipped, bright, noisy
# Example usage
image_path = '/kaggle/input/sample-image/input_image.jpg'
image = cv2.imread(image_path)
if image is None:
print(f"Failed to load image from {image_path}")
else:
print(f"Successfully loaded image from {image_path}")
rotated, flipped, bright, noisy = augment_image(image)
# Display the results
plt.figure(figsize=(20, 5))
plt.subplot(151)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Original')
plt.axis('off')
plt.subplot(152)
plt.imshow(cv2.cvtColor(rotated, cv2.COLOR_BGR2RGB))
plt.title('Rotated')
plt.axis('off')
plt.subplot(153)
plt.imshow(cv2.cvtColor(flipped, cv2.COLOR_BGR2RGB))
plt.title('Flipped')
plt.axis('off')
plt.subplot(154)
plt.imshow(cv2.cvtColor(bright, cv2.COLOR_BGR2RGB))
plt.title('Brightness Adjusted')
plt.axis('off')
plt.subplot(155)
plt.imshow(cv2.cvtColor(noisy, cv2.COLOR_BGR2RGB))
plt.title('Noisy')
plt.axis('off')
plt.tight_layout()
plt.show()
print("Script completed")