Untitled

mail@pastecode.io avatar
unknown
plain_text
5 months ago
3.7 kB
1
Indexable
import cv2
import numpy as np
import os
import time
import random

# Canvas boyutları
canvas_width = 1100
canvas_height = 600

# Dikdörtgenin boyutları ve pozisyonu
rect_padding = 100
rect_width = canvas_width - 2 * rect_padding
rect_height = canvas_height - 2 * rect_padding
rect_center_x = canvas_width // 2
rect_center_y = canvas_height // 2
rect_top_left_x = rect_center_x - rect_width // 2
rect_top_left_y = rect_center_y - rect_height // 2

# Emoji dosyalarının bulunduğu dizin
emoji_dir = r"C:\Users\DELL\Downloads\emoji_files"

# Klasörden tüm emojileri yükleyelim
def load_emojis(emoji_dir):
    emoji_files = [f for f in os.listdir(emoji_dir) if f.endswith('.png')]
    emoji_images = []
    for emoji_file in emoji_files:
        emoji_path = os.path.join(emoji_dir, emoji_file)
        img = cv2.imread(emoji_path, cv2.IMREAD_UNCHANGED)
        if img is not None:
            emoji_images.append(img)
        else:
            print(f"Failed to load: {emoji_path}")
    return emoji_images

# Emojileri yükleme
emoji_images = load_emojis(emoji_dir)
num_emojis = len(emoji_images)
emoji_size = 50  # Emojilerin genişliği ve yüksekliği
spacing = 100  # Emojiler arasındaki boşluk

def create_frame(offset):
    # Boş bir resim oluşturma (arka plan beyaz)
    frame = np.ones((canvas_height, canvas_width, 3), dtype=np.uint8) * 255
    
    # Ortalanmış içi açık gri dikdörtgeni oluşturma
    cv2.rectangle(frame, (rect_top_left_x, rect_top_left_y), 
                  (rect_top_left_x + rect_width, rect_top_left_y + rect_height), 
                  (200, 200, 200), cv2.FILLED)
    
    total_width = num_emojis * (emoji_size + spacing)  # Toplam genişliği hesaplayın

    for i, emoji_img in enumerate(emoji_images):
        if emoji_img is None:
            continue  # Eğer emoji resmi yüklenmediyse atla

        # Emoji konumlarını hesapla
        x = (rect_top_left_x + offset + i * (emoji_size + spacing)) % total_width
        y = (rect_center_y - emoji_size // 2)

        h, w = emoji_img.shape[:2]

        # Emojinin dikdörtgen sınırlarını aşmamasını sağla
        if x + w > rect_top_left_x + rect_width or y + h > rect_top_left_y + rect_height or x < rect_top_left_x:
            continue

        if w > 0 and h > 0:
            overlay = emoji_img[:h, :w, :3]
            alpha_mask = emoji_img[:h, :w, 3] / 255.0

            # Emoji resmini yapıştırma
            for c in range(0, 3):
                frame[y:y+h, x:x+w, c] = (alpha_mask * overlay[:, :, c] +
                                          (1-alpha_mask) * frame[y:y+h, x:x+w, c])

    return frame

# Pencereyi oluşturma
cv2.namedWindow("Emoji Canvas", cv2.WINDOW_AUTOSIZE)

def yatay_kayan_nesneler(v, t):
    t = max(60, min(t, 5 * 60))
    v = max(1, min(v, 3))
    hiz = 750 // (2 ** (v - 1))

    start_time = time.time()
    offset = 0

    try:
        while True:
            frame = create_frame(offset)
            cv2.imshow("Emoji Canvas", frame)

            # 100ms bekle ve emojilerin pozisyonunu güncelle
            key = cv2.waitKey(100)
            if key & 0xFF == ord('q') or key == 27:  # 'q' tuşu veya ESC tuşu
                break

            time.sleep(hiz / 1000.0)  # Hız ayarına göre bekleme
            offset += 10  # Emojilerin sağa doğru kaymasını sağla

            # Süre sonunda pencereyi kapat
            if time.time() - start_time > t:
                break

    finally:
        cv2.destroyAllWindows()

# Fonksiyonu çağırarak çalıştırma
# Örnek: 3. seviye hız, 1 dakika
yatay_kayan_nesneler(3, 60)
Leave a Comment