Microwave Techniques Ders Notları

Perşembe, Haziran 29, 2017 , 0 Comments


Prof. Dr. Gökhan ÇINAR ders materyallerinden oluşmaktadır.

Ders Notları için: TIKLAYINIZ

0 yorum:

Power System Analysis 2 Ders Notları

Cuma, Haziran 23, 2017 0 Comments



Doç. Dr. Bünyamin TAMYÜREK
ders materyallerinden oluşmaktadır.

Ders Notları için: TIKLAYINIZ

0 yorum:

Power System Analysis Ders Notları

Cuma, Haziran 23, 2017 0 Comments




Doç. Dr. Bünyamin TAMYÜREK ders materyallerinden oluşmaktadır.

Ders Notlari için: TIKLAYINIZ

0 yorum:

Power Electronics Ders Notları

Cuma, Haziran 23, 2017 , 0 Comments




Doç. Dr. Bünyamin TAMYÜREK ders materyallerinden oluşmaktadır.

Ders Notları için: TIKLAYINIZ

0 yorum:

Fuzzy Logic Ders Notları


Yrd. Doç. Dr. Hasan Serhan YAVUZ hocamızın ders materyallerinden derlenmiştir.

Ders Notları : TIKLAYINIZ
Lab Notları :  TIKLAYINIZ

0 yorum:

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:

OpenCV-Python Uygulamaları-2





Bir önceki yazıda resimler üzerindeki temel işlemleri görmüştük. Bu yazının konusunu ise video üzerindeki temel işlemler oluşturacaktır. İyi Eğlenceler..

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

Hedefler

Burada bir videonun nasıl okunabileceğini, nasıl düzenlenebileceğini ve nasıl geri kaydedilebileceğini öğreneceğiz.
Ayrıca bir videonun nasıl yakalanıp, görüntülenebileceğini de öğrenmiş olacağız.
Kullanılacak fonksiyonlar: cv2.VideoCapture() , cv2.VideoWriter()

Kameradan Video Çek


Genellikle kamera ile canlı akış yakalamak isteriz. OpenCV bunun için çok basit bir arayüz sağlar. Şimdi bebeğin birkaç adım atması mahiyetinde birkaç basit işlem yapacağız. Dünyayı dolaşmak istesek de markete gitmek istesekte aynı adımları atıyoruz ama niyet sonucu çok etkiliyor. Neyse konumuza dönelim

Bir videoyu yakalamak için bir VideoCapture nesnesi(object) oluşturmak gerekir. Parametre olarak cihazın indeksi veya video dosyasının adı kullanılabilir. İndeks sadece kamerayı tanımlar. Normalde (laptop kullandığımızı varsayıyoruz.) bir kamera bağlanacaktır. Bu yüzden sadece "0" değerini veriyoruz. Eğer harici ikinci bir kamera kullanıyorsanız "1" i index olarak seçmelisiniz.

import numpy as np
import cv2
cap = cv2.VideoCapture(0) # harici bir kamerada i=0 yerine i=1,2,3..vs kullanabilirsiniz
while(True):

#Çerçeveler halinde görüntü yakalar
    ret, frame = cap.read()

#Üzerinde işlem yapacağımız çerçeve buraya gelsin
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

#Sonuç Çerçeveyi Görüntüleme:
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'): # q ile çıkış yapabilirsiniz
        break

#Herşey yolunda gitti ise dükkanı kapatabiliriz :)
cap.release()
cv2.destroyAllWindows()

cap.read() bir boolen(True/False) mantık işlemi döndürür. Eğer çerçeve(frame) doğru bir şekilde okunduysa, doğru(True) çıkışını verecektir. Bu bize videonun kontrol edilmesi olanağını verecektir.
Bazen cap görüntü yakalamayı tanımlamayabilir. Bu durumda bu kod hata dönderecektir. Eğer doğru bir şekilde tanımlanıp tanımlanmadığını kontrol etmek istiyorsak cap.isOpened() methodunu kullanabiliriz. Hata yoksa bu metodu kullanmaya da gerek yoktur.

Not: Eğer hata alıyorsanız, kameranın doğru çalıştığından başka bir uygulama yardımı ile emin olun

Dosyadaki Bir Video ile İşlem Yapmak


Pratik olarak Kameradan görüntü yakalamak ile aynı işlem, yalnızca kamera indeksi yerine videonun dosya adını koymak gerekiyor.
Ayrıca çerçeveyi(frame) görüntülerken, cv2.waitKey() için uygun zamanı kullanmak gerekmektedir. Çok düşükse, video çok hızlı olacaktır ve çok yüksekse, video yavaş oynatılacaktır.(Aslında yavaş çekim(Slow-motion) uygulamalarının atası diyebilirsiniz bu işleme.). Normal durumlarda 25 milisaniyede sorunsuz olacaktır.

import numpy as np
import cv2
cap = cv2.VideoCapture('videotest.avi') # Kullanacağınız videonun adını buraya yazmalısınız!!

while(cap.isOpened()):
#Çerçeveler halinde görüntü yakalar
    ret, frame = cap.read()

#Üzerinde işlem yapacağımız çerçeve buraya gelsin ve griye dönsün
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

#Sonuç Çerçeveyi Görüntüleme:
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
       break

#Herşey yolunda gitti ise dükkanı kapatabiliriz :)
cap.release()
cv2.destroyAllWindows()

Not: ffmpeg veya gstreamer doğru sürümlerinin kurulduğundan emin olun. Bazen hatalı yükleme sebebi ile VideoCapture ile çalışmak sıkıntılı olabilmektedir.

Video Kaydetme


Bir video yakalayıp, onu kareler halinde işledikten sonra bu videoyu kaydetmek isteriz. Bir önceki uygulamamızda resimler için sadece cv2.imwrite() kullanmanın yeterli olduğunu görmüştük. Burada biraz daha zaman harcayacağız ama kolayca halledilebilecek bir işlem.
Bu sefer VideoWriter nesnesi(object) oluşturmamız gerekiyor. Daha sonra çıktı olarak alacağımız dosyaya bir isim vermeliyiz. Daha sonra FourCC kodunu belirtmemiz gerekiyor. Son işlemimiz ise renk için bir flag atamakta. Eğer bu renk değeri doğruysa(True) çözücü renk çerçevesini çalıştırır yoksa grinin tonları olarak çalışır.
FourCC kodu, MJPG için cv2.VideoWriter_fourcc('M','J','P','G') veya cv2.VideoWriter_fourcc(*'MJPG') olarak iletilir.
Bir kameradan görüntüyü frame halinde yakalayıp kaydetmek için aşağıdaki kod bloğunu kullanabiliriz.
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
#Codec tanımlama ve VideoWriter nesnesi(object) oluşturma
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480))

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret == True:
        frame = cv2.flip(frame,0)
        out.write(frame)
        
        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
           break
    else:
       break
#Herşey yolunda gitti ise dükkanı kapatabiliriz :)
cap.release()
out.release()
cv2.destroyAllWindows()


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

0 yorum:

OpenCV-Python Uygulamaları-1

Pazartesi, Haziran 05, 2017 , , , , 2 Comments


Ubuntuda OpenCV-Python Nasıl Kurulur?  dedikten sonra bu yazı Opencv-Python ile görüntü işleme uygulamalarının ABC'si gibidir. Keyifli okumalar,kodlamalar.

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

Hedefler

Burada bir görüntünün nasıl okunabileceğini, nasıl düzenlenebileceğini ve nasıl geri kaydedilebileceğini öğreneceğiz.
Kullanılacak fonksiyonlar: cv2.imread () , cv2.imshow () , cv2.imwrite ()
Matplotlib ile görüntüyü nasıl kullanabileceğimizi göreceğiz.

Bir Resmi Okuma

Bir resmi okumak için cv2.imread () fonksiyonu kullanılır. Resim çalışma dizininde olmalıdır veya tam bir resim yolu verilmelidir.
İkinci parametre, resmin okunması şeklini belirten bir bayraktır(flag).

  • cv2.IMREAD_COLOR: Renkli bir resim yükler. Görüntünün saydamlığı ihmal edilir. Varsayılan bayraktır(flag).
  • cv2.IMREAD_GRAYSCALE: Gri tonlama modunda görüntü yükler.
  • cv2.IMREAD_UNCHANGED: Alfa kanalı da dahil olmak üzere görüntüyü yükler.

Biraz kodlama zamanı:
import numpy as np
import cv2
#Gri tonlarda bir resim yükle
img = cv2.imread('esogu.jpg',0)

Uyarı:

Eğer resim yolu yanlışsa, herhangi bir hata almadığınız halde hiçbir sonuç göremezsiniz.

Görüntüyü Göster

Bir resmi görüntülemek için cv.imshow() fonksiyonu kullanılır. Pencere otomatik olarak görüntü boyuna uyar.
İlk parametre bir dizi(string) adıdır. İkinci parametre ise bizim imajımızdır. İstediğimiz kadar görüntü oluşturabiliriz ama farklı isimler kullanmak şartı ile.
cv2.imshow ('resim' , img) #resim adında bir pencerenin içinde bizim görüntüyü gösterir.
cv2.waitKey(0)
cv2.destroyAllWindows ()
Pencerenin ekran görüntüsü aşağıdaki gibidir.

cv2.waitKey() bir klavye bağlama fonksiyonudur. Bu fonksiyon herhangi bir klavye olayı için belirtilen milisaniyeleri bekler. O süre zarfında bir tuşa basarsanız program devam eder. Eğer "0" ataması yapılırsa sonsuza kadar bekler.
cv2.destroyAllWindows() kabaca açıklamak gerekirse oluşturulan bütün pencereleri yok ediyor. Herhangi bir pencereyi yok etmek istiyorsak pencere adını parantez içine yazmak yeterli.

Resmi Kaydetme

Bir resmi kaydetmek için cv2.imwrite() fonksiyonu kullanılır. İlk parametre dosya adı, ikinci parametre ise kaydetmek istediğimiz görüntüyü temsil eder.
cv2.imwrite('esogu.png' , img)
Bu resmi PNG formatında çalışılan dizine kaydeder.

Özet:

Aşağıdaki program gri tonlamalı bir görüntüyü yükler, eğer 's' tuşuna basarsanız görüntüyü kaydedip çıkar. 'ESC' tuşuna basarsanız kaydetmeden çıkar.
import numpy as np
import cv2
img = cv2.imread('esogu.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27: #ESC tuşunu bekler..
cv2.destroyAllWindows()
elif k == ord('s'): #Kayıt için 's' tuşunu bekler..
cv2.imwrite('esogu.png', img)
cv2.destroyAllWindows()

Matplotlib


Matpltlib Python için tasarlanmış, çok çeşitli çizim yöntemleri sunan bir kütüphanedir(library). Sonraki yazılarda bu kütüphane çokça kullanılacak. Burada ufak bir giriş yapmak adına görüntüyü Matplotlib ile nasıl açabileceğimizi göreceğiz. Matplotlib kullanarak resimleri kolayca yakınlaştırıp, uzaklaştırabilir ve kayıt işlemi yapabiliriz.
import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('esogu.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.show()
Bu işlemin sonucu aşağıdaki gibi olacaktır.

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

2 yorum: