Mobil Menü

Python ile Fotoğraf Filtre Uygulaması

Aşağıda, menülü ve birden fazla seçeneği aynı anda seçebilen 20 filtreli Python programı bulunmaktadır.

Filtre Listesi (20 Adet)

  1. Grayscale (Gri Tonlama)
  2. Sepia
  3. Negatif (Invert Colors)
  4. Gaussian Blur (Bulanıklık)
  5. Median Blur
  6. Kenarlık Tespiti (Canny Edge Detection)
  7. Keskinleştirme (Sharpening)
  8. Emboss (Kabartma Efekti)
  9. Pencil Sketch (Kurşun Kalem Efekti)
  10. Bilateral Filtering
  11. HSV Dönüştürme
  12. Kırmızı Ton Ağırlıklı Filtre
  13. Yeşil Ton Ağırlıklı Filtre
  14. Mavi Ton Ağırlıklı Filtre
  15. Sobel X Kenar Algılama
  16. Sobel Y Kenar Algılama
  17. Laplace Kenar Algılama
  18. Çizgisel Kontrast Artırma
  19. Parlaklık Artırma
  20. Kontrast Artırma

Kod: Menü ile Birden Çok Filtre Uygulama

import cv2
import numpy as np

def apply_grayscale(image):
    return cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

def apply_sepia(image):
    sepia_filter = np.array([[0.272, 0.534, 0.131], 
                             [0.349, 0.686, 0.168], 
                             [0.393, 0.769, 0.189]])
    return cv2.transform(image, sepia_filter)

def apply_negative(image):
    return cv2.bitwise_not(image)

def apply_gaussian_blur(image):
    return cv2.GaussianBlur(image, (15, 15), 0)

def apply_median_blur(image):
    return cv2.medianBlur(image, 5)

def apply_edge_detection(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    return cv2.Canny(gray, 100, 200)

def apply_sharpen(image):
    kernel = np.array([[ 0, -1,  0],
                       [-1,  5, -1],
                       [ 0, -1,  0]])
    return cv2.filter2D(image, -1, kernel)

def apply_emboss(image):
    kernel = np.array([[-2, -1,  0],
                       [-1,  1,  1],
                       [ 0,  1,  2]])
    return cv2.filter2D(image, -1, kernel)

def apply_pencil_sketch(image):
    gray, sketch = cv2.pencilSketch(image, sigma_s=60, sigma_r=0.07, shade_factor=0.05)
    return sketch

def apply_bilateral_filter(image):
    return cv2.bilateralFilter(image, 9, 75, 75)

def apply_hsv(image):
    return cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

def apply_red_filter(image):
    red_filter = image.copy()
    red_filter[:, :, 1] = 0  # Yeşil kapatıldı
    red_filter[:, :, 0] = 0  # Mavi kapatıldı
    return red_filter

def apply_green_filter(image):
    green_filter = image.copy()
    green_filter[:, :, 2] = 0  # Kırmızı kapatıldı
    green_filter[:, :, 0] = 0  # Mavi kapatıldı
    return green_filter

def apply_blue_filter(image):
    blue_filter = image.copy()
    blue_filter[:, :, 1] = 0  # Yeşil kapatıldı
    blue_filter[:, :, 2] = 0  # Kırmızı kapatıldı
    return blue_filter

def apply_sobel_x(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    return cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=5)

def apply_sobel_y(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    return cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=5)

def apply_laplace(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    return cv2.Laplacian(gray, cv2.CV_64F)

def apply_contrast(image):
    alpha = 1.5  # Kontrast katsayısı
    beta = 0     # Parlaklık sabiti
    return cv2.convertScaleAbs(image, alpha=alpha, beta=beta)

def apply_brightness(image):
    beta = 50  # Parlaklık artırma miktarı
    return cv2.convertScaleAbs(image, beta=beta)

filters = {
    "1": ("Grayscale", apply_grayscale),
    "2": ("Sepia", apply_sepia),
    "3": ("Negative", apply_negative),
    "4": ("Gaussian Blur", apply_gaussian_blur),
    "5": ("Median Blur", apply_median_blur),
    "6": ("Edge Detection", apply_edge_detection),
    "7": ("Sharpen", apply_sharpen),
    "8": ("Emboss", apply_emboss),
    "9": ("Pencil Sketch", apply_pencil_sketch),
    "10": ("Bilateral Filter", apply_bilateral_filter),
    "11": ("HSV Convert", apply_hsv),
    "12": ("Red Filter", apply_red_filter),
    "13": ("Green Filter", apply_green_filter),
    "14": ("Blue Filter", apply_blue_filter),
    "15": ("Sobel X", apply_sobel_x),
    "16": ("Sobel Y", apply_sobel_y),
    "17": ("Laplace", apply_laplace),
    "18": ("Contrast Enhance", apply_contrast),
    "19": ("Brightness Increase", apply_brightness)
}

def main():
    image_path = "sample.jpg"
    image = cv2.imread(image_path)

    if image is None:
        print("Görüntü yüklenemedi!")
        return

    print("\n📷 Uygulanabilir Filtreler:")
    for key, (name, _) in filters.items():
        print(f"{key}. {name}")

    choices = input("\nUygulamak istediğiniz filtrelerin numaralarını virgülle ayırarak girin: ")
    selected_filters = choices.split(",")

    filtered_image = image.copy()
    
    for choice in selected_filters:
        choice = choice.strip()
        if choice in filters:
            _, filter_function = filters[choice]
            filtered_image = filter_function(filtered_image)
            print(f"✅ {filters[choice][0]} uygulandı.")

    cv2.imshow("Orijinal", image)
    cv2.imshow("Filtrelenmiş", filtered_image)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == "__main__":
    main()

Özellikler

Menü ile Kullanıcı Seçimi:
Kullanıcı, menüden birden fazla filtre seçebilir.

Aynı Anda Birden Fazla Filtre:
Filtreler sırayla uygulanır.

20 Farklı Filtre:
Daha fazla efekt eklenmiştir.

Canlı Önizleme:
Sonuçlar cv2.imshow() ile gösterilir.


Örnek Kullanım

Çalıştırdıktan sonra:

Uygulamak istediğiniz filtrelerin numaralarını virgülle ayırarak girin: 1,3,6
✅ Grayscale uygulandı.
✅ Negative uygulandı.
✅ Edge Detection uygulandı.

Filtrelenmiş Görüntü Ekranda Açılır!

Osman Bayrak
Osman Bayrak

Yazılım Mühendisiyim. Teknoloji ve yazılıma meraklıyım.

Articles: 163