Untitled
unknown
plain_text
a month ago
3.5 kB
1
Indexable
Never
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 = 180 rect_width = canvas_width - 1 * 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 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}") 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), (220, 220, 220), 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