Untitled

Aynı nesne tekrarlı rectanglesız
mail@pastecode.io avatar
unknown
python
a month ago
3.1 kB
1
Indexable
Never
import cv2
import numpy as np
import os
import time

# Canvas boyutları
canvas_width = 1100
canvas_height = 600

# Emoji dosyalarının bulunduğu dizin
emoji_dir = "C:/Users/7480/Desktop/yz/cv2/HOT/Sprint_2/emojis"

# 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 = 80  # Emojiler arasındaki boşluk

def create_frame(current_count):
    # Boş bir resim oluşturma (arka plan beyaz)
    frame = np.ones((canvas_height, canvas_width, 3), dtype=np.uint8) * 255

    for i in range(current_count):
        emoji_img = emoji_images[i % num_emojis]
        if emoji_img is None:
            continue  # Eğer emoji resmi yüklenmediyse atla

        # Emoji konumlarını hesapla
        total_width = current_count * (emoji_size + spacing) - spacing
        x = (canvas_width - total_width) // 2 + i * (emoji_size + spacing)
        y = (canvas_height - emoji_size) // 2

        h, w = emoji_img.shape[:2]

        # Emojinin sınırları aşmamasını sağla
        if x + w > canvas_width or y + h > canvas_height:
            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(n, v, t):
    n = max(6, min(n, 12))
    t = max(60, min(t, 5 * 60))
    v = max(1, min(v, 3))
    hiz = 750 // (2 ** (v - 1))

    start_time = time.time()
    current_count = 1

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

            # 100ms bekle ve emojilerin pozisyonunu güncelle
            if cv2.waitKey(100) & 0xFF == ord('q'):
                break

            time.sleep(hiz / 1000.0)  # Hız ayarına göre bekleme

            current_count += 1
            if current_count > n:
                current_count = 1

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

    finally:
        cv2.destroyAllWindows()

# Fonksiyonu çağırarak çalıştırma
# Örnek: 6 nesne, 2. seviye hız, 2 dakika
yatay_kayan_nesneler(6, 2, 120)
Leave a Comment