Spaces:
Sleeping
Sleeping
File size: 4,590 Bytes
aa77ce2 004055b aa77ce2 004055b aa77ce2 004055b aa77ce2 021fc44 aa77ce2 004055b aa77ce2 004055b aa77ce2 004055b aa77ce2 004055b aa77ce2 004055b aa77ce2 021fc44 aa77ce2 004055b aa77ce2 004055b 021fc44 aa77ce2 004055b aa77ce2 004055b aa77ce2 021fc44 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
import cv2
import numpy as np
import gradio as gr
# Farklı filtre fonksiyonları
def apply_gaussian_blur(frame, blur_level=1):
ksize = (2 * blur_level + 1, 2 * blur_level + 1)
return cv2.GaussianBlur(frame, ksize, 0)
def apply_sharpening_filter(frame):
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])
return cv2.filter2D(frame, -1, kernel)
def apply_edge_detection(frame):
return cv2.Canny(frame, 100, 200)
def apply_invert_filter(frame):
return cv2.bitwise_not(frame)
def adjust_brightness_contrast(frame, alpha=1.0, beta=50):
return cv2.convertScaleAbs(frame, alpha=alpha, beta=beta)
def adjust_saturation(frame, saturation=1.0):
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV).astype("float32")
hsv[..., 1] *= saturation
hsv[..., 1] = np.clip(hsv[..., 1], 0, 255)
return cv2.cvtColor(hsv.astype("uint8"), cv2.COLOR_HSV2BGR)
def adjust_hue(frame, hue_shift=0):
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
hsv[..., 0] = (hsv[..., 0].astype(int) + hue_shift) % 180
return cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
def adjust_gamma(frame, gamma=1.0):
inv_gamma = 1.0 / gamma
table = (np.array([((i / 255.0) ** inv_gamma) * 255 for i in range(256)])
.astype("uint8"))
return cv2.LUT(frame, table)
def apply_grayscale_filter(frame):
return cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
def apply_sepia_filter(frame):
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(frame, sepia_filter)
def apply_fall_filter(frame):
fall_filter = np.array([[0.393, 0.769, 0.189],
[0.349, 0.686, 0.168],
[0.272, 0.534, 0.131]])
return cv2.transform(frame, fall_filter)
# Filtre uygulama fonksiyonu
def apply_filter(filter_type, input_image=None, alpha=1.0, beta=50, saturation=1.0, hue_shift=0, gamma=1.0, blur_level=1):
if input_image is not None:
frame = input_image
else:
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
cap.release()
if not ret:
return "Web kameradan görüntü alınamadı"
# Seçilen filtreyi uygula
if filter_type == "Gaussian Blur":
frame = apply_gaussian_blur(frame, blur_level=blur_level)
elif filter_type == "Keskinleştir":
frame = apply_sharpening_filter(frame)
elif filter_type == "Kenar Algılama":
frame = apply_edge_detection(frame)
elif filter_type == "Ters Çevir":
frame = apply_invert_filter(frame)
elif filter_type == "Gri Tonlama":
frame = apply_grayscale_filter(frame)
elif filter_type == "Sepya":
frame = apply_sepia_filter(frame)
elif filter_type == "Sonbahar":
frame = apply_fall_filter(frame)
# Tüm filtrelerden bağımsız parametreleri uygula
frame = adjust_brightness_contrast(frame, alpha=alpha, beta=beta)
frame = adjust_saturation(frame, saturation=saturation)
frame = adjust_hue(frame, hue_shift=hue_shift)
frame = adjust_gamma(frame, gamma=gamma)
return frame
# Gradio arayüzü
with gr.Blocks() as demo:
gr.Markdown("# Web Kameradan Canlı Filtreleme")
# Filtre seçenekleri
filter_type = gr.Dropdown(
label="Filtre Seçin",
choices=["Gaussian Blur", "Keskinleştir", "Kenar Algılama", "Ters Çevir", "Parlaklık/Kontrast", "Doygunluk", "Renk Tonu", "Gama", "Gri Tonlama", "Sepya", "Sonbahar"],
value="Gaussian Blur"
)
# Ayar kaydırıcıları
alpha_slider = gr.Slider(0.5, 3.0, value=1.0, label="Parlaklık")
beta_slider = gr.Slider(-100, 100, value=50, label="Kontrast")
saturation_slider = gr.Slider(0.0, 3.0, value=1.0, label="Doygunluk")
hue_slider = gr.Slider(-90, 90, value=0, label="Renk Tonu Değişimi")
gamma_slider = gr.Slider(0.1, 3.0, value=1.0, label="Gama")
blur_slider = gr.Slider(1, 10, value=1, label="Bulanıklık Seviyesi")
# Görüntü yükleme alanı
input_image = gr.Image(label="Resim Yükle", type="numpy")
# Çıktı için görüntü
output_image = gr.Image(label="Filtre Uygulandı")
# Filtre uygula butonu
apply_button = gr.Button("Filtreyi Uygula")
# Butona tıklanınca filtre uygulama fonksiyonu
apply_button.click(
fn=apply_filter,
inputs=[filter_type, input_image, alpha_slider, beta_slider, saturation_slider, hue_slider, gamma_slider, blur_slider],
outputs=output_image
)
# Gradio arayüzünü başlat
demo.launch() |