Yatay Nesneler Uzun
unknown
python
a year ago
3.7 kB
5
Indexable
import cv2 import numpy as np import time import random import os def ciz_dikdortgen(canvas, sol_ust, sag_alt, renk=(200, 200, 200), kalinlik=-1): """Verilen koordinatlar ve özelliklere göre tuvale dikdörtgen çizer.""" cv2.rectangle(canvas, sol_ust, sag_alt, renk, kalinlik) def nesne_ciz(canvas, pos, nesne_img, nesne_boyutu): """PNG dosyasındaki alfa kanalını kullanarak transparan arka planı koruyarak nesneyi çizer.""" for c in range(3): canvas[pos[1] - nesne_boyutu//2:pos[1] + nesne_boyutu//2, pos[0] - nesne_boyutu//2:pos[0] + nesne_boyutu//2, c] = \ nesne_img[:, :, c] * (nesne_img[:, :, 3] / 255.0) + canvas[pos[1] - nesne_boyutu//2:pos[1] + nesne_boyutu//2, pos[0] - nesne_boyutu//2:pos[0] + nesne_boyutu//2, c] * (1.0 - nesne_img[:, :, 3] / 255.0) def acilan_nesne_yatay(n, v, t): # Parametre sınırlarını kontrol et n = max(6, min(n, 12)) # Nesne adedi (6 ile 12 arasında) t = max(60, min(t, 5 * 60)) # Programın çalışma süresi (saniye cinsinden, 1 dakika ile 5 dakika arasında) v = max(1, min(v, 3)) # Hız seviyesi (1 ile 3 arasında) hiz = 1500 // (2 ** (v - 1)) # Hız milisaniye cinsinden hesaplanır # Tuval boyutu canvas_width = 1000 canvas_height = 600 canvas_center_x = canvas_width // 2 canvas_center_y = canvas_height // 2 # Şerit rengini ve boyutlarını ayarlayın nesne_boyutu = 74 nesne_aralik = 10 # Nesneler arasındaki yatay boşluk # Nesne görsellerinin dizini nesne_dizin = "../Sprint_2/emojis/" # Görsellerinizin bulunduğu dizini buraya yazın nesne_listesi = [os.path.join(nesne_dizin, f) for f in os.listdir(nesne_dizin) if f.endswith('.png')] # Programın başlama zamanı start_time = time.time() while time.time() - start_time < t: # Yeni rastgele nesne dizisi seç random_indices = random.sample(range(len(nesne_listesi)), n) for i in range(1, n + 1): # 1'den n'e kadar sırayla nesneleri göster canvas = np.ones((canvas_height, canvas_width, 3), dtype="uint8") * 255 # Dikdörtgenin boyutlarını hesapla rect_width = (nesne_aralik + nesne_boyutu) * (n - 1) + nesne_boyutu rect_height = nesne_boyutu + nesne_aralik # Dikdörtgenin sol üst köşesinin pozisyonu rect_x1 = canvas_center_x - rect_width // 2 rect_y1 = canvas_center_y - rect_height // 2 rect_x2 = canvas_center_x + rect_width // 2 rect_y2 = canvas_center_y + rect_height // 2 # Dikdörtgeni çiz ciz_dikdortgen(canvas, (rect_x1, rect_y1), (rect_x2, rect_y2)) # Nesne pozisyonlarını x ekseninde merkez hizasında ayarla nesne_positions = [(rect_x1 + j * (nesne_aralik + nesne_boyutu) + nesne_boyutu // 2, canvas_center_y) for j in range(i)] for k, pos in enumerate(nesne_positions): nesne_img = cv2.imread(nesne_listesi[random_indices[k % len(nesne_listesi)]], cv2.IMREAD_UNCHANGED) nesne_img = cv2.resize(nesne_img, (nesne_boyutu, nesne_boyutu)) nesne_ciz(canvas, pos, nesne_img, nesne_boyutu) # Nesneyi çiz # Görüntüyü göster cv2.imshow("Nesne Takibi", canvas) if cv2.waitKey(hiz) & 0xFF == ord('q'): cv2.destroyAllWindows() return cv2.destroyAllWindows() # Fonksiyonu çağıralım acilan_nesne_yatay(n=6, v=1, t=60) acilan_nesne_yatay(n=10, v=3, t=60) acilan_nesne_yatay(n=12, v=3, t=60)
Editor is loading...
Leave a Comment