Yatayda Nesneler Kısa KOd

 avatar
unknown
python
a year ago
2.4 kB
7
Indexable
import cv2
import numpy as np
import time
import random
import os

def nesne_ciz(canvas, pos, nesne_img, nesne_boyutu):
    """Nesneyi tuvale çizer ve PNG dosyasındaki alfa kanalını kullanarak transparan arka planı korur"""
    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):
    """Nesneleri belirli aralıklarla yatay olarak ekrana yerleştirir ve gösterir"""
    n = max(6, min(n, 12))
    t = max(60, min(t, 5 * 60))
    v = max(1, min(v, 3))
    hiz = 750 // (2 ** (v - 1))

    canvas_w, canvas_h = 1100, 600
    nesne_boyutu, nesne_aralik = 80, 5
    nesne_set = nesne_boyutu + nesne_aralik
    nesne_dizin = "../Sprint_2/emojis/"
    nesne_listesi = [os.path.join(nesne_dizin, f) for f in os.listdir(nesne_dizin) if f.endswith('.png')]

    start_time = time.time()

    while time.time() - start_time < t:
        random_indices = random.sample(range(len(nesne_listesi)), n)

        for i in range(1, n + 1):
            canvas = np.ones((canvas_h, canvas_w, 3), dtype="uint8") * 255
            rect_x1 = (canvas_w - ((nesne_set * n) - nesne_aralik)) // 2
            rect_y1 = (canvas_h - nesne_set) // 2

            cv2.rectangle(canvas, (rect_x1, rect_y1), (rect_x1 + (nesne_set * n) - nesne_aralik, rect_y1 + nesne_set), (220, 220, 220), -1)

            for j in range(i):
                pos = (rect_x1 + j * nesne_set + nesne_boyutu // 2, canvas_h // 2)
                nesne_img = cv2.imread(nesne_listesi[random_indices[j % len(nesne_listesi)]], cv2.IMREAD_UNCHANGED)
                nesne_img = cv2.resize(nesne_img, (nesne_boyutu, nesne_boyutu))
                nesne_ciz(canvas, pos, nesne_img, nesne_boyutu)

            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=2, t=60)
acilan_nesne_yatay(n=12, v=3, t=60)
Editor is loading...
Leave a Comment