Merhaba arkadaşlar, bugünkü derste openCV üzerinden geometrik şekil nasıl çizilir onu öğreneceğiz.

İlk olarak çizgi çizmeyi öğrenelim;

Çizgi çizmek için cv2.line() fonksiyonunu kullanıyoruz. Fonksiyonun çalışma mantığı,  cv2.line(ekran,(başlangıç noktası x,başlangıç noktası y),(bitiş noktası x, bitiş noktası y),(renk kodu (‘255,0,0’ gibi..) ),kalınlık).

[php]
import numpy as np
import cv2
ekran = np.zeros((550,550,3), np.uint8)
cv2.line(ekran,(100,0),(100,550),(255,0,0),5)
cv2.namedWindow(‘çizgi’)
cv2.imshow(‘çizgi’,ekran)
cv2.waitKey(0)
cv2.destroyAllWindows()
[/php]

Yukarıdaki kod’un çalışma mantığı ise, 550×550 ekrandaki, x de 100 metre ileride 550 birim uzunluğundaki çizgiyi vermektedir.
program çıktısı, aşağıdaki gibidir;
çizgi

Şimdi gelin bu çizgi işini geliştirelim, yapmaya çalışacağımız eşit aralıklarda yatay ve dikey çizgiler elde edelim;

[php]
import numpy as np
import cv2
ekran = np.zeros((550,550,3), np.uint8)
aralikx=[50,100,150,200,250,300,350,400,450,500,550]
araliky=[50,100,150,200,250,300,350,400,450,500,550]
for i in aralikx:
cv2.line(ekran,(0,i),(550,i),(255,0,0),5)
for j in araliky:
cv2.line(ekran,(j,0),(j,550),(255,0,0),5)

cv2.namedWindow(‘çizgi’)
cv2.imshow(‘çizgi’,ekran)
cv2.waitKey(0)
cv2.destroyAllWindows()
[/php]

burda şimdi ne yaptık, x ve y düzlemi için aralık listesi belirledik ve listede 50 den başlayıp 550 ye kadar çizdirdik.
Programın çıktısı;
kare

Dikdörtgen çizimi;
Dikdörtgen çizimide cv2.line() kullanımı ile aynı olmaktadır, burada dikdörtgen foksiyon olarak cv2.rectangle() ‘dır. Kullanım tamamen aynıdır.

işte kodumuz;

 

[php]
import numpy as np
import cv2
ekran = np.zeros((550,550,3), np.uint8)
cv2.rectangle(ekran,(0,0),(250,250),(255,0,0),3)
cv2.namedWindow(‘çizgi’)
cv2.imshow(‘çizgi’,ekran)
cv2.waitKey(0)
cv2.destroyAllWindows()
[/php]

Şimdi ise çizgi ve dikdörtgeni birleştirerek bir desen elde edelim;

[php]
# -*- coding: cp1254 -*-
import numpy as np
import cv2
ekran = np.zeros((550,550,3), np.uint8)
aralikx=[0,50,100,150,200,250,300,350,400,450,500]
araliky=[0,50,100,150,200,250,300,350,400,450,500]
karex=[500,400,300,200,100,0]
karey=[500,400,300,200,100,0]
for x in karex:

for y in karey:
cv2.rectangle(ekran,(x,y),(0,0),(255,255,0),5)

for i in aralikx:
for j in araliky:
cv2.line(ekran,(i,j),(i,j),(255,0,0),5)

cv2.imshow(‘çizgi’,ekran)
cv2.waitKey(0)
cv2.destroyAllWindows()

[/php]

program çıktısı;
kare
Burda çizgilerden nokta yaparak,birer sıra atlamış kare deseni yapmış olduk.
‘aralikx , araliky’ kısımları nokta oluşumunu sağlamaktadır. Diğer liste kare oluşturmaktadır. örnekleri istediğiniz kadar çoğaltabilirsiniz arkadaşlar, bu sizin algoritmanızı geliştirecektir.
Şimdi gelelim daire çizimine;

cv2.circle() fonksiyonu ile yapılmaktadır. Kullanım açısından diğerlerinde benzer özellik göstermektedir.

daire

[php]
# -*- coding: cp1254 -*-
import numpy as np
import cv2
ekran = np.zeros((550,550,3), np.uint8)
cv2.circle(ekran,(63,63), 63, (0,0,255), 0)

cv2.imshow(‘çizgi’,ekran)
cv2.waitKey(0)
cv2.destroyAllWindows()

[/php]

Arkadaşlar burda kod’un çalışma mantığı, merkez noktası belirleniyor ve yarıçap uzunluğu belirliyoruz. Ve sondaki ‘0’ yerine -1 yazarsak daire içini doldurmuş oluyorsunuz.

Şimdilik bu kadar arkadaşlar, anlamadığınız yer olduğunda yorum kısmına belirtirseniz yardımcı olmaya çalışırım. Kolay gelsin…