Büyüyen Kare-Dikdörtgen
unknown
plain_text
8 months ago
4.2 kB
7
Indexable
import cv2 import numpy as np import time # Zamanı ölçmek için gerekli def buyuyen_sekil(sekil_turu, genisleme_hizi, sure): # genişleme hızı ve süre min max ile gösterimi # def buyuyen_sekil(sekil_turu, genisleme_hizi=500, sure=45): # genisleme_hizi değerini 100 ile 1000 arasında sınırla #genisleme_hizi = max(100, min(genisleme_hizi, 1000)) # sure değerini 60 ile 300 saniye arasında sınırla #sure = max(1*60, min(sure, 5 * 60)) if not 100 <= genisleme_hizi <= 1000: genisleme_hizi = 500 #TEST ICIN print("genisleme_hizi, 100 ile 1000 arasında olmalıdır. Varsayılan 500 ms kullanılıyor.") if not 60 <= sure <= 5*60: sure = 45 #TEST ICIN print("sure, 1 dakika (60 saniye) ile 5 dakika (300 saniye) arasında olmalıdır. Varsayılan 45 saniye kullanılıyor.") # Canvas boyutları ve merkez noktası canvas_x = 500 canvas_y = 500 center_x = canvas_x // 2 center_y = canvas_y // 2 # Renkler ve yarıçaplar center_color = (169, 169, 169) center_radius = 7 shape_color = (104, 104, 104) corner_color = (0, 36, 255) corner_radius = 10 # Beyaz tuval canvas = np.ones((canvas_y,canvas_x, 3), dtype="uint8") * 255 baslangic_zamani = time.time() # Başlangıç zamanı kaydedilir. Program çalışmaya başladıktan itibaren ne kadar süre geçti? while time.time() - baslangic_zamani < sure: # Yeniden çağrıldı time ve tekrar süre alındı.Süre dolmamışsa döngü devam etti size = 50 #kenar ölçüsü max_size = min(canvas_x, canvas_y)-50 # Şeklin büyüyebileceği max uzunluk(Sınıra dayanmasın şık dursun diye -50) while size <= max_size: canvas.fill(255) # Tuvali temizle (beyaza boya) # Ortada daire çiz cv2.circle(canvas, (center_x, center_y), center_radius, center_color, -1) # Kare/dikdörtgen çiz current_size = size while current_size >= 50: if sekil_turu == 'kare': top_left = (center_x - current_size // 2, center_y - current_size // 2) #üst sol koordinat(225,225) x=50,y=50 bottom_right = (center_x + current_size // 2, center_y + current_size // 2) # alt sağ koordinat(275,275) elif sekil_turu == 'dikdortgen': top_left = (center_x - current_size // 2, center_y - int(current_size * 0.3)) #(225,235) x=50,y=30 bottom_right = (top_left[0] + current_size, top_left[1] + int(current_size * 0.6)) #(275,265) cv2.rectangle(canvas, top_left, bottom_right, shape_color, 3)#2 sefer yazmamak için döngü dışına alındı current_size -= 50 # En son karenin/dikdörtgenin köşelerini işaretle if sekil_turu == 'kare': top_left = (center_x - size // 2, center_y - size // 2) bottom_right = (center_x + size // 2, center_y + size // 2) elif sekil_turu == 'dikdortgen': top_left = (center_x - size // 2, center_y - int(size * 0.3)) bottom_right = (top_left[0] + size, top_left[1] + int(size * 0.6)) corners = [top_left, (top_left[0], bottom_right[1]), (bottom_right[0], top_left[1]), bottom_right] for corner in corners: cv2.circle(canvas, corner, corner_radius, corner_color, -1) #4 sefer yazmamak için for a alındı cv2.imshow("Buyuyen Sekil", canvas) if cv2.waitKey(genisleme_hizi) & 0xFF == 27: # ESC tuşuna basılarak çıkılabilir cv2.destroyAllWindows() return size += 50 cv2.destroyAllWindows() # Fonksiyonu çağırma buyuyen_sekil(sekil_turu='kare', genisleme_hizi=1000, sure=60) # Kare çizimi için buyuyen_sekil(sekil_turu='dikdortgen', genisleme_hizi=100, sure=300) # Dikdörtgen çizimi için
Editor is loading...
Leave a Comment