Untitled
Aynı nesne tekrarlı rectanglesızunknown
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