Saturday, October 17, 2009

OpenCv -> Numpy

OpenCv uzerinden okunan bir imaji Numpy ile isleyebilmek icin veriyi Numpy'in isleyebilecegi bir array tipine cevirmek gerekiyor. Bu ceviriyi yapmak icin gereken kod OPENCV/interfaces/swig/python dizini altindaki adaptors.py kodu icinde. Once, eger yapmadiysaniz, tum bu dizini "make; sudo make install" ile derleyip kurmak lazim. Adaptor kodunu soyle kullaniyoruz
from opencv import adaptors

def dotrack(img):
..
numpy_arr = adaptors.Ipl2NumPy(img)
Geri gelen numpy_arr uc boyutlu bir vektor. X ve Y kordinatlar ve bu indislerin kullanimiyla gelen 3 elemanli "ufak array" icinde ise sirasiyla R, G, B degerleri olacak, yani kirmizi (red), yesil (green) ve mavi (blue) renklerinin degerleri olacak. Bu array uzerinde degisim yapilirsa geri OpenCv imajina cevirmek icin NumPy2Ipl cagrisi kullanilabilir. Array boyutlarina print len(numpy_arr..) ile bakabilirsiniz, erisim normal array erisimi, numpy_arr[100][100][0] kullanimi 100x100 kordinatindaki kirmizi degeri verecek mesela. Kamera goruntusu indislere [y][x][renk] olarak yansiyor.

Friday, October 16, 2009

OpenCV ile Piksel Boyamak

Obje takibi icin bazi objenin saptindigi pikselleri farkli bir renkle boyamak gerekecek. Bunun icin yesil renk kullanilabilir, ve OpenCv kutuphanesinde cvSet2D fonksiyonu renk set etmek icin kullanilabilir. Kod organizasyonu acisindan ise OpenCv baslatan, kameraya baglanan, dongu icinde imaj alip ekrana basan kodlari kodun ic mantigindan ayirmak mantikli. track.py ve dotrack.py dosyalarinda bu yapiyi gorebilirsiniz. Fonksiyon dotrack() icinde 10x10 boyutlarinda 100 tane pikseli yesile boyuyoruz.
def dotrack(img):
color = CV_RGB(0, 255, 0)
for i in xrange(10):
for j in xrange(10):
cvSet2D(img, 100+i, 100+j, color)
return img

Tuesday, October 6, 2009

Stephen Marsland - Yapay Ogrenim Kitabi

Stephen Marsland'in yapay ogrenim kitabini tavsiye ediyoruz. Kitabin iyi taraflari yapay ogrenimde son zamanlarda sikca gorulen simulasyon, ornekleme vurgusunu kitapta yansitmasi, ayrica tum orneklerin Python uzerinden verilmesi. Hem ogrenim hem gercek uygulamalarda bilimsel hesaplama icin Matlab'den Python'a bir gecis var - Matlab'in ticari bir urun olmasi ve dilinin Python kadar genel kullanimda olan bir dil olmamasi bu gecisi tetikleyen ana sebeplerden. Kitabin sitesi surada, tum Python ornek kodlari oradan indirilebilir.