OpenCV ile geometrik şekiller çizimi

Bu derste OpenCV’de python ile nasıl geometrik şekiller çizebileceğimizi öğreneceğiz. Geometrik şekiller kapsamında çizgi, daire, dikdörten, kare vb çizimler yapacağız. Bu çizimler basit bir işlem olsa da nerede kullanacağımızdan bahsetmek istiyorum. Örneğin ilerleyen uygulamalarda yüz tespit çalışmaları yapacağız. Tespit edilen yüzleri kare içine alıp, çizgi kalınlıkları, renkleri vb tanımlayabilmek için çizim işlemlerini biliyor olmak gerekmektedir.

Line çizimi : cv2.line

cv2.line temelde 4 parametre ile çalışır.

Parametre 1 : çizimin yapılacak olduğu arka plan

Parametre 2 : PT1 : x1,y1 koordinatı yani çizginin x1,y1 koordinatı başlangıç noktası

Parametre 3 : PT2 : x2,y2 koordinatı, cizginin x2,y2 koordinatı bitiş noktası

Parametre 4 : renk

Parametre 5 : çizgi kalınlığı

import cv2
import numpy as np
print(np.__version__) 

#numpy kütüphanesi ile 512,512 boyutunda 3 kanallı sıfırlardan oluşan, 8 bitlik boş bir arkaplan oluşturduk

bg=np.zeros((512,512,3),dtype="uint8")
cv2.line(bg,(0,0),(128,128),(255,0,0),3)
cv2.arrowedLine(bg,(512,0),(128,128),(0,255,0),3)
cv2.imshow("geo_pencere",bg)
cv2.waitKey(0)
cv2.destroyAllWindows()

numpy kütüphanesini içe aktarıyoruz. Numpy kütüphanesini eklememizin sebebi sıfırlardan oluşan yani siyah renkli 512,512 boyutunda 3 kanallı arkaplan oluşturuyoruz. Sonrasında cv2.line ile çizim yapılır. Cv2.line için 5 parametre tanımı yapıyoruz. Cv2.arrowedLine ile ok işaretli çizgi oluşturuyoruz. Cv2.imshow, cv2.waitKey ve cv2.destroyAllWindows diğer derslerde olduğu gibi pencerede resim görüntüleme, ekranda resmi bekletme, gösterim sonrasında pencereyi sonlandırma işlemleri yapılmıştır.

Şimdi cv2.rectangle ile dikdörtgen, kare çizimi yapalım. cv2.rectangle temelde 6 parametre alır.

1. parametreÇizimin yapılacak olduğu arka plan resmi
2. parametre (pt1)X1,y1 başlangıç noktası
3.parametre (pt2)X2,y2 bitiş noktası
4.parametreRenk
5.parametreDikdörtgenin çizgi kalınlığı
6.parametreÇizgi tipi
import cv2
import numpy as np
print(np.__version__)

bg=np.zeros((512,512,3),dtype="uint8")
cv2.line(bg,(0,0),(128,128),(255,0,0),3)
cv2.arrowedLine(bg,(512,0),(128,128),(0,255,0),3)
cv2.rectangle(bg,(256,256),(384,384),(0,0,255),2)
cv2.imshow("geo_pencere",bg)
cv2.waitKey(0)
cv2.destroyAllWindows()

Çizdiğimiz şey aslında bir kare. 384-256 =128px

128,128 boyutunda bir kare.

Rengi kırmızı. Daha önce de bahsettiğimiz gibi OpenCV’de renk uzayı default olarak BGR’dır. 0,0,255 yani blue:0, green:0, red:255 karemizin kırmızı olacağı anlamına gelir.

Thickness yani kalınlık değerini -1 yaparsak, içini doldurma işlemi yapar.

Bir diğer çizim tipi olan daire çizimine geçelim. Daire çiziminde cv2.circle komutu kullanılır ve aldığı parametreler aşağıdaki gibidir.

1.parametreÇizimin yapılacak olduğu arka plan resmi
2.parametreMerkez noktası
3.parametreYarıçap – radius
4.parametreRenk
5.parametreKalınlık
import cv2
import numpy as np
print(np.__version__)

bg=np.zeros((512,512,3),dtype="uint8")
cv2.line(bg,(0,0),(128,128),(255,0,0),3)
cv2.arrowedLine(bg,(512,0),(128,128),(0,255,0),3)
cv2.rectangle(bg,(256,256),(384,384),(0,0,255),-1)
cv2.circle(bg,(100,400),50,(0,255,0),3)
cv2.imshow("geo_pencere",bg)
cv2.waitKey(0)
cv2.destroyAllWindows()

Son olarak metin yazdırma işlemine bakalım. cv2.putText ile metin yazdırabiliriz.

cv2.putText(bg,’TurkIOT OpenCV giriş’,(5,500),cv2.FONT_HERSHEY_SIMPLEX,4,(255,0,0),10,cv2.LINE_AA)

cv2.putText birçok parametre alır. İlk parametre her zaman olduğu gibi yazdırma yapacağımız arka plan. Sonrasında yazdırmak istediğimiz text, metnin x,y koordinat bilgisi, Font tanımı, font size değeri, renk, çizgi kalınlığı, çizgi tipi..

OpenCV2’de kullanabileceğiniz fontlar için linkten incelemede bulunabilirsiniz.

https://docs.opencv.org/4.5.2/d6/d6e/group__imgproc__draw.html

Bu derste ileride farklı uygulamalarda kullanacak olduğumuz temel çizim işlemlerini ele almış olduk.

İlk yorum yapan olun

Bir yanıt bırakın