22 Şubat 2016 Pazartesi

OPENCV DERSLERİ (DERS:9) YAZI YAZDIRMA

KOD;


import numpy as np
import cv2

# Create a black image
img = np.zeros((512,512,3), np.uint8)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'YAZI',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()


Ekran Görüntüsü;



Kod Açıklaması;

1)

           
Resimdeki kare içine alınan yer yazının sırası ile X ve Y koordinatlarını ayarlar.

2)

          

Resimdeki kare içine alınan yer yazının büyüklüğünü ayarlar.

3)

         
Resimdeki kare içine alınan yer sırasıyla "mavi, yeşil,kırmızı" renkleridir. Bu değerler ile oynanarak çeşitli renkler elde edebilirsiniz.

4)

         
Resimdeki kare içine alınan yer yazının kalınlığını belirler.

Ders:8⬅                                                                  Ders:10

OPENCV DERSLERİ (DERS:8) GEOMETRİK ŞEKİL ÇİZİM-6

D)Geometrik Şekillerin Tek Fotoğrafta Toplanması

KOD;


import numpy as np
import cv2

# Create a black image
img = np.zeros((512,512,3), np.uint8)

cv2.line(img,(0,0),(511,511),(255,0,0),5)
pts = np.array([[15,150],[15,180],[45,200],[215,150],[405,15]], np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(img,[pts],True,(0,255,255))
cv2.rectangle(img,(100,20),(300,40),(0,255,0),10)
cv2.circle(img,(447,63), 63, (0,0,255), -1)                                           
cv2.ellipse(img,(256,256),(100,50),0,0,360,(255,0,100),-1)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows() 

Ekran Görüntüsü;




Ders:7⬅                                                                    Ders:9

OPENCV DERSLERİ (DERS:7) GEOMETRİK ŞEKİL ÇİZİM-5

D)Çokgen Çizdirmek

KOD;


import numpy as np
import cv2

img = np.zeros((512,512,3), np.uint8)                                               pts = np.array([[15,150],[15,180],[45,200],[215,150],[405,15]], np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(img,[pts],True,(0,255,255))
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ekran Görüntüsü;




Kod Açıklaması;

1)

                

Kare içine alınan bölgedeki parantezler çokgenin köşe sayısını belirler.

2)

               

Kare içine alınan bölge ise köşenin sırası ile X ve Y koordinatlarını belirler. buradaki koordinatlarla oynanarak çokgenin yerini ve şeklini değiştirebilirsiniz.

Ders:6⬅                                                                    Ders:8

17 Şubat 2016 Çarşamba

OPENCV DERSLERİ (DERS:6) GEOMETRİK ŞEKİL ÇİZİM-4

C)Elips Çizdirmek

KOD;


import numpy as np
import cv2
img = np.zeros((512,512,3), np.uint8)
cv2.ellipse(img,(256,256),(100,50),0,0,360,(255,0,100),-1)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ekran Görüntüsü;



Kod Açıklaması;

                  1)

                        

Resimdeki kare içinde alınan bölge elipsin merkezinin yataydaki koordinatıdır. Değer azaltıldıkça elips sola doğru kayar.Değer arttırıldıkça elips sola doğru kayar.

                  2)

                      

Resimdeki kare içine alınan bölge elipsin merkezinin düşey koordinatıdır. Değer azaldıkça elips yukarı doğru kayar, değer arttıkça elips aşağı doğru kayar

                  3)

                      

Resimdeki kare içine alınmış bölge elipsin basıklığını ayarlar.Birinci değer yatay eksende basıklığı ayarlar, ikinci değer elipsin düşey eksende basıklığı ayarlar. Her iki değerde eşit alınırsa elips daireye döner.

                4)

                    

Resimdeki kare içine alınmış değerler sırasıyla x,y,z koordinatlarını simgeler. değerlerle oynarsanız şeklin değiştiğini gözlemlersiniz.

                5)

                    

Resimdeki kare içine alınmış değerler Elipsin rengini belirler.sırasıyla rakamlar"Mavi,Yeşil,Kırmızı" renklerdir. Değerlerle oynanarak çeşitli renkler elde edebilirsiniz.

               6)

                    

Resimdeki kare içine alınmış değerler Elipsin içinin boş olup olmadığını belirler.Burada"-1" içini dolu yapar,"0" elipsin içini boş yapar.

Ders:5⬅                                                                    Ders:7



OPENCV DERSLERİ (DERS:5) GEOMETRİK ŞEKİL ÇİZİM-3

B)Daire Çizdirme

KOD;


import numpy as np
import cv2

img = np.zeros((512,512,3), np.uint8)

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

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ekran Görüntüsü;




Kod Açıklaması;

                1)

                       

Resimdeki kare içine alınmış bölge dairenin yatay koordinatıdır.Değer arttırılırsa daire sağa doğru kayar, değer azaltılırsa daire sola doğru kayar.

                2)

                      

Resimdeki kare içine alınmış bölge dairenin düşey koordinatıdır. Değer arttırılırsa  daire aşağı doğru kayar,azaltılırsa daire yukarı doğru kayar.

               3)

                    

Resimdeki kare içine alınmış bölge dairenin yarıçapının değeridir. Değer arttırılırsa daire büyür,değer azaltılırsa daire küçülür.

               4)

                   

Resimdeki kare içine alınmış bölge dairenin rengini belirler.Bu değerler sırasıyla; Mavi,Yeşil,Kırmızı rengidir. Değerlerle oynanarak dairenin rengi değiştirilebilir.

              5)

                  

Resimdeki kare içine alınmış bölge dairenin içinin dolu olup olmamasını belirler.Burada "-1" dairenin dolu olması demektir. "0" dairenin içinin boş olması anlamına gelir.


Ders:4⬅                                                                    Ders:6



OPENCV DERSLERİ (DERS:4) GEOMETRİK ŞEKİL ÇİZİM-2

A)Kare Çizdirme

KOD;


import numpy as np
import cv2

img = np.zeros((512,512,3), np.uint8)
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()


Ekran Görüntüsü;




Kod Açıklaması;
           1)      

           
                            

Resimdeki kare içine alınmış bölge yatay eksendeki dikdörtgenin sol düşey kenarının koordinatıdır.Değeri azaltırsak açılan pencerede dikdörtgen sola doğru genişler.Değeri arttırır isek dikdörtgen sağa doğru daralır.

           2)

                        

Resimdeki kare içine alınmış bölge düşey eksendeki dikdörtgenin üst yatay kenarının koordinatıdır.Değeri arttırır isek üst kenar aşağı bölge doğru hareket eder ve alan daralır.Değeri azaltır isek üst kenar yukarı doğru çıkar ve dikdörtgenin alanı artar.

           3)

                      

Resimdeki Kare içine alınmış bölge yatay eksendeki dikdörtgenin sağ düşey kenarının koordinatıdır.Değeri artırırsak kenar sağ tarafa doğru kayar ve dikdörtgenin alanı artar.Değeri azaltırsak kenar sola doğru kayar ve dikdörtgenin alanı azalır.

            4)

                      

Resimdeki kare içine alınmış bölge düşey eksendeki dikdörtgenin alt yatay kenarının koordinatıdır.Değer arttırılırsa kenar aşağı tarafa doğru kayar yani dikdörtgen büyür.Değer azaltılırsa kenar yukarı doğru kayar ve dikdörtgen alanı küçülür.

           5)


                     

Resimdeki kare içine alınmış böle sırasıyla Mavi,Yeşil,Kırmız renkleridir bunların değerleriyle oynayarak istediğiniz renkte olmasını sağlayabilirsiniz.

            6)

                     
Resimdeki kare içine alınmış bölde dikdörtgenin kenar kalınlığını belirler.değeri arttırarak kalınlaştırabilir,azaltarak inceltebilirsiniz.


Ders:3⬅                                                                    Ders:5
       





OPENCV DERSLERİ (DERS:3) GEOMETRİK ŞEKİL ÇİZİM-1

Merhaba Bu yazımızda Python ve OpenCV kullanarak geometrik şekil çizdirmeyi öğreneceğiz.

1)Çizgi Çizdirmek

Ç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). 

A) KOD;

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() 



  • Yukarıdaki kod’un çalışma mantığı ise, 550×550 ekrandaki, x de 100 metre ileride 550 birim uzunluğundaki çizgiyi vermektedir. 
EKRAN GÖRÜNTÜSÜ;


B)KOD;

import numpy as np
import cv2

# Create a black image
img = np.zeros((512,512,3), np.uint8)

# Draw a diagonal blue line with thickness of 5 px
cv2.line(img,(0,0),(511,511),(255,0,0),5)
cv2.imshow('image',img)
cv2.waitKey(0)

cv2.destroyAllWindows()

EKRAN GÖRÜNTÜSÜ;



2)Yatay ve Düşey Çizgi Çizdirme

KOD;

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() 

EKRAN GÖRÜNTÜSÜ;

 


Ders:2⬅                                                                    Ders:4

12 Şubat 2016 Cuma

OPENCV DERSLERİ(DERS:2) RESİM GÖRÜNTÜLEME

Bu yazımızda Python ve OpenCV kullanarak bilgisayarımızda bulunan bir resimi görüntüleme uygulaması yapacağız.
         
           KOD;
        import cv2 
        import numpy as np  
        resim = cv2.imread('resim.png',0) 
        cv2.imshow('resim',resim) 
        cv2.imwrite('resim.jpg',resim) 
        cv2.waitKey(0) 

       cv2.destroyAllWindows() 


Kodları Açıklıyacak olursak;
  • import cv2: OpenCV kütüphanesini çağırır.
  • import numpy as np: numpy kütüphanesini çağırır
  • resim = cv2.imread('resim.png',0): bu kod resmi okumamızı sağlıyor.
  • cv2.imshow('resim',resim):  resmi görüntülemek istersek aşağıdaki kodu kullanmaktayız.
  • cv2.imwrite('resim.jpg',resim): Bu kod resmi kaydetmek için kullanılır(biz .jpg formatına dönüştürdük siz istediğiniz formata döüştürebilirsiniz)

Daha Detaylı Açıklayacak Olursak:

  1. Kodları Yazabilmek için Python IDLE'den yeni dosya açıyoruz.
    2.Kodları yazmaya başlıyoruz
          

   3.python- opencv-logo.png resim dosyasının tam ismidir
   4. Run/Run Module dediğiniz zaman karşınıza bu şekilde siyah beyaz hali gelir ve masaüstüne resmi kaydeder.

        


Ders:1⬅                                                                    Ders:3




10 Şubat 2016 Çarşamba

IP KAMERA SEÇİMİ

Eğer Görüntü işlemeveya güvenlik sistemi kurmak istiyorsanız IP kamera(Internet Protokol kamera) vazgeçilmezinizdir

IP Kamera Nedir
IP Kamera  uzaktan izlemek ve kayıt altına almak için internet veya network bağlantınızdan faydalanarak gerek kablolu gerek kablosuz olarak kullanılabilmeye imkan sunan kamera teknolojisidir.
IP Kamera diğer sistemler gibi ekstra aparatlar, kartlar, kayıt cihazları gerektirmeyen en ileri teknolojiye sahip olan kamera sistemidir. İp Kameralar göürüntü aktarılan mekanının canlı ve sesli olarak bulunduğunuz heryerden bilgisayarınız, laptopunuz, cep telefonunuz ve PDA'nızdan rahatlıkla izleyebilme olanağı sunmaktadır. 

IP Kamera Çeşitleri

1)Dome Kamera
 Dome kameralar hareketli kamera anlamına gelir.360 derecede dönerek,bu sayede daha geniş açıda mekanınızı kontrol altına almanızı sağlıklı bir şekilde sağlayabilir.Kontrol altına alınması gereken ortam geniş açılı ise yani geniş açıdan izlenmesi gerekiyorsa dome kameların alınması gereklidir.
2)Box Kamera
Dünyada ilk üretilen, kullanılan, tanınan kamera modeli olduğu için güvenlik kamerası denilence bu kameralar akla gelir. Bu kameralar günlük yaşamda Box kamera, metal kutu kamera, ccd kamera, metal kasa kamera isimleriyle anılır. Yüzlerce farklı özellikte ürün modelleri vardır. Box Kameralar CCTV Kamera Sistemlerinde uygulanmaktadır. Box Kameralar Gece Görüş özelliğine sahip değildirler. Bu Nedenle Box Kameralarda Gece net bir görüntü almak zordur.

3)Bullet Kamera
İnfra Red yani kızıl ötesi ışınlar kullanarak, karanlık ortamlarda görüntü elde etmeye yarayan güvenlik kameralarına denir. Özellikle dış ortam kapalı devre kamera sistemi uygulamarında yoğun olarak tercih edilir. Suya ve toza oldukça dayanıklıdırlar. Bu sayede dış ortam CCTV sistemi uygulamalarında, ayrıca kamera muhafazası, kamera ayağı ve cctv kamera lensi gerektirmediği için kullanım kolaylığı sağlar. Bu özellikler kullanım kolaylığı yanında fiyat avantajı da getirir. Gece görüşü için IR ledleri kullanılacağından, iki kat enerji harcar. Dolayısıyla adaptör seçimi bu faktör göz önüne alınarak yapılmalıdır. Diğer kameralara göre daha ekonomiktir

KISACA IP KAMERA BİLGİLENDİRMESİNDEN SONRA ASIL KONUMUZA DÖNELİM. IP KAMERA SEÇERKEN HANGİ KRİTERLERİ GÖZ ÖNÜNE ALMALIYIZ...

1)P2P(Peer to Peer): P2P yazılımı ile çok basit şekilde IP kamerası kurulumu yapabilirsiniz. Çünkü P2P Ip kameralarda sistem yazılımı kameranın içine gömülü haldedir. Böylece Ip adresinden Mobil cihazlardan ve PCden görüntü aktarma işleminiz daha basit olur.
2)PoE(Power over Ethernet):PoE ethernet kablosunun aynı anda sistemi çalıştıracak gerilimi vermesi demektir.PoE ile IP kameranızın beslemesini direk RJ45 ethernet kablosuyla sağlayabilirsiniz.Bu maliyeti ve kablo fazlalığınızı azaltır hemde daha stabil çalışmasını sağlar.
3)PTZ(Pan,Tilt,Zoom):Yatay ve Düşey eksenlerde kameranın dönebilme ve yakınlaştırma yapabilme yeteneğini belirtir.Böylece daha geniş açıya hakim olursunuz ve daha uzaktaki bir noktayı yakınlaştırıp oraya odaklanmanızı sağlar.
4)SNR(Signal to Noise Ratio):İletilmek istenen sinyalin; gürültü kaynaklarından yayılan gürültü sinyallerine oranı SNR-Signal to Noise Raito (sinyal gürültü oranı) olarak adlandırılır.Genellikle bu oran desibel cinsinden ifade edilir.Kameranın SNR değeri ne kadar yüksek ise gürültünüz o kadar az görüntünüz o kadar net bir şekilde aktarılır.
5)Video Sıkıştırma Formatı:Ip kameranın Video sıkıştırma formatı olarak H.264 formatını desteklemesi kullanıcı için daha avantajlı olur. H.264 sıkıştırma tekniği MPEG4 Part 10 (Advanced Video Coding) olarakta bilinir.Ticari video sıkıştırma teknolojilerinin lideri olarak ortaya çıkmıştır. Seleflerinin çok üzerinde bir sıkıştırma sağlar. MPEG4′ ten %25 daha iyi sıkıştırma gerçekleştirir. Ayrıca iyi resim kalitesi, en küçük dosya boyutu, DVD kalitesinde video, network üzerinden daha verimli video aktarımı gibi özellikleriyle kendinden önceki kodeklere fark atar.
H.264 avantajları:
  • MPEG4 part 2 den iki kat yüksek verimlilik
  • MPEG2 den 3 kat daha düşük dosya boyutu
  • Hızlı indirme süresi
  • Yüksek kaliteli video.
  • Yüksek hareket kompanzasyonu. MPEG4 te olduğu gibi yüksek harekette bulanıklaşma olmaz
  • Mobile networkte hata eğilimini sezme.
6)Görüş Açısı(Viewing Angle):Standart Ip kameralarda 60 derecedir. fakat ne kadar yüksek olursa bu açı anlık olarak hakim olduğunuz alanın kapasitesi artar.
7)Minimum Aydınlatma(Minimum Illumination):Asgari aydınlatma (ışık hassasiyeti),kameranın kaliteli bir görüntü elde etmesi için gereken ışığın en küçük miktarını ifade eder.Luks(lx) ile  ifade edilen minimum aydınlatma ölçüsüdür.Bir kameranın iyi görüntü vermesi ortamda ki yeterli ışığa bağlıdır.Yetersiz ışık olan ortamlarda görüntü karanlık,karıncalı veya gürültülü olacaktır.Düşük ışık koşullarında kaliteli görüntü elde etmek için  day&nihgt kameralarla kızılötesi ışıktan yararlanmak gerekir.Tam karanlık,duman,sis,pus,toz gibi zor  koşullarda düzgün görüntü elde etmek için en iyi çözüm network termal kameralardır.
Genellikle kuvvetli güneş ışığı 100.000 lux,tam gün ışığı 10.000 lux,ofis ışıkları 500 lux,kötü aydınlatılmış bir oda  100 lux tür.

BU ÖZELLİKLERE DİKKAT ETMENİZ SİZİ DAHA 

DONANIMLI BİR IP KAMERA SAHİBİ YAPABİLİR...








1 Şubat 2016 Pazartesi

BLAZE- MİNYATÜR PROGRAMLANABİLİR EKRAN

Kickstar.com'da destek toplayan Blaze Adlı Projeyi görünce çok hoşuma gitti ve burada paylaşmak istedim.

Blaze yüksek çözünürlük 1.6 inç 240x240 kapasitif dokunmatik ekran ve yüksek hızlı 32 bitlik Arm mikrodenetleyicisiyle ve GPIO pinleri bulunan Arduino uyumlu ve Arduino IDE'den programlanabilir geliştirme kartı..


Blaze MicroSD kart girişiyle hafıza arttırlabilir. Programlama ve Güç için Micro USB girişi bulunmaktadır.


BLAZE'in Özellikleri

Mikroişlemci: ARM Cortex-M4 
Clock Speed: 120MHz 
Flash Bellek: 512KB (yükseltilmiş 1MB) 
SRAM: 128KB 
Ekran: 1.6 "TFT 
Çözünürlük: 240x240px 
Renk Derinliği: 262.143 renk 
dokunun: Kapasitif 
Sistemi Voltaj: 3.3V DC 
ADC Çözünürlük: 16 -bit 
ADC Kanallar: 2x diferansiyel veya 4x tek uçlu 
DAC Çözünürlük: 12 bit 
DAC Kanallar: x1 

Boyut:



Tanıtım Videosu;

OPENCV DERSLERİ(DERS:1) PYTHON'A OPENCV YÜKLEMEK




Bu yazımızda Windows işletim sisteminde OpenCV,Python kurulumu ve birbirine nasıl entegre edileceğini inceleyeceğiz. Her gerçekleştirdiğimiz olayı adım adım anlatacağız...


ADIM 1 : PYTHON' YÜKLENMESİ

Bu adımda Python'un 2.X.X versiyonundan indireceğiz Biz burda Python 2.7.11 versiyonunu kullandık...
Python 2.X.X versiyonlarını Buradan indirebilirsiniz.
Setup dosyasını indirdikten sonra kurulum aşamasına geçiyoruz.


Pythonun kurulacağı yeri yukarıdaki resimdeki gibi "C:\Python27\" olarak seçiyoruz bunu yapmamızdaki amaç pythonun dosyalarında daha kolay erişmektir.
Daha sonra klasik Yükleme işlemlerimiz sonrasında Python kullanıma hazırdır.


ADIM 2 : OPENCV YÜKLENMESİ

OpenCV kütüphanesinin Son sürümünü işletim sisteminize göre Buradan indirin.

Kütüphaneyi bilgisayarınıza kurarken 1 aşama çok önemlidir




Kütüphaneyi kuracağınız yeri "C:\" olarak seçiyoruz.Bunun sebebi python,visual studio gibi programlara entegre edebilmek için kolay bulunabilir olması gereklidir.



ADIM 3 : CV2 DOSYASININ PYTHON'A AKTARIMI


Bu adımda pythonda opencv'yi çalıştırabilmek için gerekli dosyayı aktarma işlemi gerçekleştirilecektir.

  1. Öncelikle OpenCV'nin kurulu olduğu klasörü açıyoruz.
  2. Bu klasörün içindeki build klasörünü açıyoruz.
  3. Build klasörünün içindeki python  klasörünü açıp onun içindeki 2.7 klasörünü açıp bilgisayarımızın 64bit veya 32 bit olmasına göre x64 veya x86 klasörüne giriyoruz.
  4. Bu klasörün içindeki "cv2.pyd" dosyasına erişip kopyalıyoruz.



       

             5. Daha sonra Python'un kurulu olduğu klasörü açıyoruz.
             6. ve "Lib" klasörüne girip, onunda içinde olan "site- packages" klasörüne "cv2.pyd" dosyasını yapıştırıyoruz.





ADIM 4: NUMPY KURULMASI

Numpy'in güncel setup dosyasını Burdan indirebilirsiniz.
Numpy'i yüklerken Pythonun yüklü olduğu klasörün içine kurunuz.



ADIM 5 : DENEME

Bu adıma kadar yaptığımız bütün aşamaları eksiksiz yaptıysanız OpenCV'yi Python'da kullanmayı hazırız demektir.
Yaptığımız işlemlerin doğru yapıldığını ve programın eksiksiz çalıştığını denemek için

  1. Python IDLE'yi açıyoruz
  2. Python IDLE'ye şu komutu giriyoruz;
1 >>> import cv2

2 >>> print cv2.__version__





Bu komutta Pythonda OPENCV'nizin versiyonunu gördünüz ve çalışıp çalışmadığını test ettiniz.

Eğer "İmport cv2" komutunda hata alıyorsanız adımların birinde hata yapmışsınızdır.

Kaynak: http://docs.opencv.org/master/d5/de5/tutorial_py_setup_in_windows.html#gsc.tab=0