Teknik-Informatika-PSDKU-Ng.../backend/augmentasi.py

108 lines
2.5 KiB
Python

import os
import numpy as np
from tensorflow.keras.preprocessing import image
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from PIL import Image
# =========================
# PATH GAMBAR ASLI
# =========================
img_path = r"D:\Corn_Detection\dataset_1150\Hawar\Hawar_0118.jpg"
# =========================
# FOLDER OUTPUT
# =========================
output_dir = r"D:\Corn_Detection\augmentation"
os.makedirs(output_dir, exist_ok=True)
# =========================
# LOAD IMAGE
# =========================
img = image.load_img(img_path, target_size=(224,224))
img_array = image.img_to_array(img)
img_array = np.expand_dims(img_array, axis=0)
# Simpan gambar asli
img.save(os.path.join(output_dir, "asli.jpg"))
# =========================
# FUNGSI SIMPAN AUGMENTASI
# =========================
def save_augmented_image(datagen, filename):
aug_iter = datagen.flow(img_array, batch_size=1)
batch = next(aug_iter)
img_aug = batch[0].astype("uint8")
Image.fromarray(img_aug).save(
os.path.join(output_dir, filename)
)
# =========================
# ROTATION
# =========================
rotation_gen = ImageDataGenerator(
rotation_range=20
)
save_augmented_image(rotation_gen, "rotasi.jpg")
# =========================
# ZOOM
# =========================
zoom_gen = ImageDataGenerator(
zoom_range=0.2
)
save_augmented_image(zoom_gen, "zoom.jpg")
# =========================
# HORIZONTAL FLIP
# =========================
flip_gen = ImageDataGenerator(
horizontal_flip=True
)
save_augmented_image(flip_gen, "horizontal_flip.jpg")
# =========================
# BRIGHTNESS
# =========================
brightness_gen = ImageDataGenerator(
brightness_range=[0.8,1.2]
)
save_augmented_image(brightness_gen, "brightness.jpg")
# =========================
# WIDTH SHIFT
# =========================
width_shift_gen = ImageDataGenerator(
width_shift_range=0.1
)
save_augmented_image(width_shift_gen, "width_shift.jpg")
# =========================
# HEIGHT SHIFT
# =========================
height_shift_gen = ImageDataGenerator(
height_shift_range=0.1
)
save_augmented_image(height_shift_gen, "height_shift.jpg")
# =========================
# SHEAR
# =========================
shear_gen = ImageDataGenerator(
shear_range=0.1
)
save_augmented_image(shear_gen, "shear.jpg")
print("===================================")
print("Semua hasil augmentasi berhasil disimpan")
print("Lokasi :", output_dir)
print("===================================")