Yazımınızın ana konusuna geçmeden bir duyuru ve bir soruyala başlayalım.
Önce duyurumuz.
OpenCv 3.3 yayınlandı ; En bariz fark DNN kısmının contribden ana dağıtıma aktarılması olarak görünüyor, Darısı epeydir contribde duran diğer kısımlara diyelim. Yeniliklere bakarsak
- DNN : zaten var olan bir kısımdı ama ana dağıtıma girdi. Ve elbette gelişti. Örneklere göre Caffe 1 , Torch ve Tensorflow modellerini çalışıtrabiliyor. Bence çok önemli ve yeni derin öğrenme kütüphaneleri desteğiyle güncel tutulması gereken bir kısım. Sadece eğitilmiş modeli kullanmakda eziyet olabiliyor. DNN ile bu problem bir nebze olsun çözülüyor.
- "a language for image processing and computational photography" diye bahsedilen halide desteği gelmiş. Daha net bir şey görünmüyor ama siftah yapmışlar :)
- C++ 11 desteği gelmiş
- Intel Media SDK ile video okuma yazma işlemlerinde donanım hızlanması sağlanmış
- Pek çok özellik eklemsi ve hata ayıklaması yapılmış.
OpenCv yi, sattığı IPP kütüphanesine bir payanda gibi sığ bir düşüncesi vardı. Millet opencv öğrenecek daha hızlı çalıştırabilmek için IPP satın alacaktı hesapta olmadı.
Sonra bütün bütün elini ayağını çekdi. Buda ayrı bir hataydı. OpenCv gelişmeye devam etti.
Intel yaptığı hatadan şimdi opencv nin ana geliştiricisi konumunda olan itseez 'i satın alarak dönmeye çalışıyor. İnşallah yine hatalı stratejilere yönelip opencv nin gelişimini engelleyecek adımlar atmaz...
Sorumuza gelirsek.
"Pythonun pek çok kütüphane desteği var görüntü işleme için opencv kulllanmasak olmazmı ?"Benim şahsi görüşüme göre OLMAZ. OpenCv C++ tabanlı olmasıyla, hız olarak kullanmayı düşündüğünüz diğer kütüphanelerin pek çoğunun önüne geçer. İlaveten OpenCv görüntü işleme ve bilgisayarlı görü alanındaki büyük çoğunluk tarafından standart kabul edilen bir kütüphanedir. Bu size kaynak bolluğu olarak hemen gelir. OpenCv kullanarak geliştireceğiniz bir uygulamayı pek çok değişik dile de taşıyabilirsiniz.
Gelelim ana konumuza.
Pythonda OpenCv kütüphanesini nasıl kuracaksınız?
İlk seçenek OpenCv yi derlemek. Nispeten zor bir yol. Internette derlemenin uzun uzun anlatıldığı pek çok örnek görebilirsiniz, kitabımızda da var. Python için dikkat etmeniz gereken şey python un kullandığınız versiyon için olan seçeneklerin dolu olması.
mesela resimde benim derleme için kullandığım cmake dosyasından
derleme sonrasında cv2.pyd bir dosya oluşturuluyor. Bu dosyayı pythonu kurduğunuz dizin altında
lib/site-packagesdizinine atın. Eğer derlemeyi statik yapmaıysanız, opencv'in dinamik kütüphanelerininde ulaşılabilir yerde - baknız path tanımı - olması lazım.
İkinci ve daha kolay, derlenmiş hazır dağıtımı kullanmak.
Öncelikle sisteminizde Python 2.7.x 64 kurulu olmalı hatta tavsiyemiz. Anaconda dağıtımını kullanmanız.
Python hazırsa artık opencv ye geçelim.
opencv.org/releases.htmladresinden window için derlenmiş dağıtımı indirin
idirdiğiniz dosyayı çalıştırın dosya aslında sadece sıkıştırılmış dosyayı açıyor. Kendinizce uygun gördüğünüz bir dizine açın.
açtığınız dizinde 'opencv\build\python\2.7\x64' kısmında cv2.pyd dosyasını bulun.
lib/site-packagesdizinine atın. Bu dağıtım statik olarak derlendiğinden sadece
opencv\build\bindizininde bulunan "opencv_ffmpeg330_64.dll" kütüphanesine bağlıdır. Bunuda windows -path tanımlı - bir yere taşımanız gerekiyor. mesela pythonu kurduğunuz dizin.
Evet artık opencv python içinden kullanıma hazır.
deneme yapalım
komut satırından pythonu çalıştırın
import cv2
cv2.__version__
yazın kurulumunzda bir hata yoksa size yüklü olan opencv nin versiyonunu gösteririr.
Artık python içinden opencv 'yi kullanmaya başlaya bilirsiniz. Geçen yazımızda bildirmiştik, kitabımızdaki opencv örneklerinin python versiyonlarını yazıyoruz. Yeni dersler eklendi. Yukardaki adımları yaptıysanız. Python örneklerini githubdan klonlayıp inceleyebilirsiniz
Yazımızın sonuna geldik. her türlü görüş ve önerilerinizi bekleriz.
3 yorum:
Merhaba;
Opencv3.3 visual studio 2015 için mi destekliyor sadece? VS2013 için denedim ama hata alıyorum bir bilginiz var mı bu konuda?
Python 2.7.x demişsiniz ama 3.x neden olmuyor?
python 2.7 ile 3.x arasında bir uyum yok
3.x için dağıtılan derlenmiş pakette bu yazı yazıldığında python3 için paket yoktu
Yorum Gönder