OpenCV-Python Uygulamaları-3

Pazartesi, Haziran 12, 2017 0 Comments


Kullanılan Sistem Özellikleri: Ubuntu 16.04 LTS, OpenCV 3.2, Python 3.5.2

Hedefler

OpenCV ile farklı geometrik şekiller çizme.
Kullanılacak fonksiyonlar: cv2.line(), cv2.circle(), cv2.rectangle(), cv2.ellipse(), cv2.putText()

Kodlar Hakkında:

Yukarıdaki fonksiyonlar benzer parametreleri kullanmaktadırlar. Genel manada bir açıklama yapmak gerekirse:
img: Çizmek istediğimiz görüntü
color: Şeklin rengi, BGR(Blue,Green,Red) renklerden oluşan 8-bitlik renk tayfı(255,0,0..v.b.)
thickness: Çizilen şeklin çerçeve kalınlığı
lineType: Çizginin tipi

Çizgi Çalışması:


Görüntü işleme çalışmaları sırasında, daha doğrusu bilgisayar temelli yapılan bütün işlemlerde doğadaki karşılıkları bilgisayar için anlamlandırılmalıdır. Yani kağıt ve kalem ile bir çizgi çizerken ne yapıyorsak aynı işlemleri bilgisayarın bizim yerimize adım adım yapmasını sağlamalıyız.
Matematiksel olarak bir çizgi oluşturabilmek için başlangıç ve bitiş noktalarını belirlememiz gerekir. Aynı işlemi burada da tekrarlayacağız.
import numpy as np
import cv2
#Siyah bir zemin oluşturuyoruz
img = np.zeros((512,512,3), np.uint8)

# 5 piksel kalınlığında diagonal mavi bir çizgi çizdiriyoruz. Çizginin özellikleri size kalmış, 8 bitlik değerleri istediğiniz gibi değiştirebilirsiniz.
cv2.line(img,(0,0),(511,511),(255,0,0),5)

Dikdörtgen Çizimi:


Dikdörtgen çizmek için dikdörtgenin sol üst köşesi ve sağ alt köşesi gerekir. Bu sefer resmin sağ üst köşesinde yeşil bir dikdörtgen çizeceğiz.

cv2.rectangle (img,(384,0), (510,511), (0,255,0), 3)

Çember Çizimi:


Bir çember çizmek için merkez koordinatlarına ve yarıçapına ihtiyacımız var. Yukarıda çizilen dikdörtgenin içine bir çember çizeceğiz.

cv2.circle (img,(447,63),63,(0,0,255),-1)

Elips Çizimi:


Elips çizmek için birkaç parametreye ihtiyaç duymaktayız. Merkez noktası olarak (x,y). Sonraki parametre eksenlerin uzunlukları, Eksenlerin açısı ve dönme yönü, başlangıç ve bitiş açıları. Daha fazla bilgi için cv2.ellipse fonksiyonun dökümantasyonuna başvurabilirsiniz.

cv2.ellipse(img,(256,256), (100,50),0,0,180,255,-1)

Poligon Çizimi:


Bir poligon çizmek için öncelikle köşelerin koordinatlarına ihtiyacımız vardır. Bu noktaları bir dizi haline getireceğiz ve sarı renkte bir çokgen çizeceğiz.

pts = np.array([[10,5],[20,30],[70,20],[50,10]],np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(img,[pts],True,(0,255,255))

Not: Eğer poligonun 3. argümanını "False" yaparsanız kapalı bir şekil yerine tüm noktaları birleştiren bir çizgi elde edersiniz. cv2.polylines() fonksiyonu birden fazla çizgi çizmek içinde kullanılabilir.

Görüntülere Yazı Ekleme:


Görüntülere yazı eklemek için:
Yazmak istediğiniz veri,
Yazmak istediğiniz konumun koordinatları(örneğin verilerin başladığı sol alt köşe),
Yazı tipi (desteklenen yazı tipleri için cv2.putText() dökümanlarını inceleyebilirsiniz.) Yazı tipi boyutu
Renk, kalınlık, çizgi türü gibi yazıyı daha iyi gösterecek özellikler için lineType = cv2.LINE_AA yı kullanabilirsiniz.

#Beyaz renkte Esogu-EEE yazdıracağız.
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'Esogu-EEE', (10,500), font, 4, (255,255,255),2,cv2.LINE_AA)

Eğer işler yolunda gittiyse aşağıdaki gibi çıktılar elde etmelisiniz. Parametreleri değiştirerek kendi hayal gücünüzü yansıtabilirsiniz. İyi Eğlenceler..

Kaynak dosyaları ve Resimleri indirmek için: TIKLAYINIZ
Kaynakça: http://docs.opencv.org/3.2.0/

0 yorum: