Untitled
unknown
plain_text
a year ago
3.5 kB
7
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 = 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)Editor is loading...
Leave a Comment