Untitled

 avatar
unknown
plain_text
a year ago
3.4 kB
6
Indexable
import cv2
import numpy as np

def create_canvas():
    return np.ones((500, 500, 3), dtype="uint8") * 255 #beyaz bir tuval oluşturma

def draw_center_circle(canvas, center, radius=10):
    cv2.circle(canvas, center, radius, (0, 0, 0), -1) #daire oluşturma

def draw_expanding_squares(canvas, center, size):
    #Bu kısım, kareleri çizen döngüdür. 
    current_size = 50 #değişkeni başlangıçta 50 olarak atanır ve her döngüde 50 birim artırılır.
    while current_size <= size:  #size dögüsüyle size büyüklüğüne kadar kareler çizilir.
        top_left = (center[0] - current_size // 2, center[1] - current_size // 2)
        bottom_right = (center[0] + current_size // 2, center[1] + current_size // 2) #karenin sol üst ve sağ alt köşe koordinatlarını hesaplarlar.
        cv2.rectangle(canvas, top_left, bottom_right, (0, 0, 0), 4) #canvas üzerine kare çizilir. 
        current_size += 50
    #Bu kısım, en büyük kareyi ve köşe noktalarını belirler.
    top_left = (center[0] - size // 2, center[1] - size // 2)
    bottom_right = (center[0] + size // 2, center[1] + size // 2) # en büyük karenin sol üst ve sağ alt köşe koordinatlarını hesaplarlar.

    corner_points = [
        top_left,
        (top_left[0], bottom_right[1]),
        (bottom_right[0], top_left[1]),
        bottom_right #listesi, bu karenin köşe noktalarını içerir. Bu noktalar, karenin dört köşesini temsil eder.
    ]
    #Bu kısım, köşe noktalarını yeşil renkte dairelerle işaretler.
    for point in corner_points:
        cv2.circle(canvas, point, 8, (0, 255, 0), -1) #canvas üzerine her bir köşe noktası için bir daire çizilir. 
#Bu kısım, fonksiyon Tanımı ve Parametreler        
def expand_squares(expansion_speed=500, duration=45): #genişleme hızı 500 milisaniye ve süre 45 saniyedir.
    #Bu kısım, başlangıç değerleri
    size = 50 #Başlangıçta karelerin boyutu 50 birim olarak ayarlanmıştır.
    start_time = cv2.getTickCount() / cv2.getTickFrequency() #Fonksiyonun başlangıç zamanını alır. Bu, sürenin hesaplanmasında kullanılacaktır.
   #Bu kısm, ana döngü 
    while True:
        canvas = create_canvas() #Her döngü başında yeni bir canvas oluşturulur.
        center = (canvas.shape[1] // 2, canvas.shape[0] // 2) #Canvas'ın merkez noktası hesaplanır.
        draw_center_circle(canvas, center) #Oluşturulan canvas üzerine merkez daire çizilir.
        draw_expanding_squares(canvas, center, size) #Canvas üzerine genişleyen kareler çizilir, size parametresi ile karelerin boyutu artırılır.
        # Bu kısım, görüntü gösterme ve kontroller
        cv2.imshow("Canvas", canvas)

        elapsed_time = (cv2.getTickCount() / cv2.getTickFrequency()) - start_time #Geçen süre hesaplanır.
        if elapsed_time >= duration:
            break #Belirtilen süre (duration) tamamlandığında döngü sonlandırılır.

        key = cv2.waitKey(expansion_speed)
        if key == 27:  # Esc tuşu basıldığında döngü sonlandırılır.
            break

        size += 50 #Her adımda kare boyutu 50 birim artırılır.

    cv2.destroyAllWindows()

if __name__ == "__main__": #Python dosyasının doğrudan çalıştırıldığı zamanlarda belirli bir kod bloğunun çalıştırılmasını sağlar.
    expand_squares()
Editor is loading...
Leave a Comment