Untitled

 avatar
unknown
plain_text
a year ago
2.9 kB
6
Indexable
import cv2
import numpy as np
import os
import random
import time

# Parametreler
canvas_w, canvas_h = 1100, 600
nesne_boyutu = 100  # Emoji boyutu
nesne_aralik = 10  # Emojiler arasındaki boşluk
emoji_klasor = 'emojiler/'  # Emoji klasör yolu
arka_plan_rengi = (255, 255, 255)  # Beyaz arka plan
cerceve_rengi = (211, 211, 211)  # Gri çerçeve rengi
nesne_adedi = 6  # Toplam nesne sayısı
gosterim_suresi = 5  # Her bir emoji'nin ekranda kalma süresi (saniye)

def load_emojis(emoji_klasor):
    emojiler = []
    for dosya_adi in os.listdir(emoji_klasor):
        if dosya_adi.endswith('.png'):
            emoji_yolu = os.path.join(emoji_klasor, dosya_adi)
            img = cv2.imread(emoji_yolu, cv2.IMREAD_UNCHANGED)
            if img is not None and img.shape[2] == 4:
                emojiler.append(img)
            else:
                print(f"Yüklenemeyen dosya: {dosya_adi}")
    return emojiler

def overlay_image(background, img, position):
    x, y = position
    h, w = img.shape[:2]

    if y + h > background.shape[0] or x + w > background.shape[1]:
        return

    alpha_img = img[:, :, 3] / 255.0
    alpha_bg = 1.0 - alpha_img

    for c in range(0, 3):
        background[y:y+h, x:x+w, c] = (alpha_img * img[:, :, c] +
                                       alpha_bg * background[y:y+h, x:x+w, c])

def emoji_display():
    emojiler = load_emojis(emoji_klasor)
    if not emojiler:
        print("Emoji resimleri yüklenemedi!")
        return

    # Pencereyi oluştur
    frame = np.full((canvas_h, canvas_w, 3), arka_plan_rengi, dtype=np.uint8)

    # Çerçeve boyutları ve koordinatları
    cerceve_yukseklik = nesne_boyutu + 2 * nesne_aralik
    cerceve_w = (nesne_boyutu + nesne_aralik) * nesne_adedi - nesne_aralik
    start_x = (canvas_w - cerceve_w) // 2
    start_y = (canvas_h - cerceve_yukseklik) // 2

    # Rastgele 6 emoji seç
    secilen_emojiler = random.sample(emojiler, nesne_adedi)

    # Ekranda göstermek için bir pencere oluştur
    for i in range(nesne_adedi):
        frame = np.full((canvas_h, canvas_w, 3), arka_plan_rengi, dtype=np.uint8)
        cv2.rectangle(frame, (start_x, start_y), (start_x + cerceve_w, start_y + cerceve_yukseklik), cerceve_rengi, -1)

        # Her yeni emoji'yi ekranda göster
        for j in range(i + 1):  # Şu ana kadar gelen tüm emoji'leri göster
            emoji = cv2.resize(secilen_emojiler[j], (nesne_boyutu, nesne_boyutu), interpolation=cv2.INTER_AREA)
            x = start_x + j * (nesne_boyutu + nesne_aralik)
            y = start_y + nesne_aralik
            overlay_image(frame, emoji, (x, y))

        # Pencereyi güncelle ve bekle
        cv2.imshow("Emoji Display", frame)
        cv2.waitKey(gosterim_suresi * 1000)  # Her bir emoji'nin ekranda kalma süresi kadar bekle

    cv2.destroyAllWindows()

emoji_display()
Editor is loading...
Leave a Comment