5.840 kez okundu
OpenCV ile Dünyayı Yeniden Keşfetmek
OpenCV kütüphanesi’ni 1999 yılında Intel’den Gary Bradsky başlattı ve ilk sürümü 2000 yılında yayınlandı. Daha sonra bu çalışmalara Vadim Pisarevsky de katıldı. Halen OpenCV’nin Bilgisayar Görmesi ve Makina Öğrenmesi çalışmalarına yönelik desteği artarak devam etmektedir. (1)
OpenCV kütüphanesi hem C++, Python ve Java gibi dilleri; hem de Linux, Windows, OS X, Android ve iOS gibi platformları desteklemektedir. Kütüphane çalışmaları açık kaynaklıdır ve https://www.opencv.org/ sitesi üzerinden paylaşılmaktadır. Son sürüm OpenCV 4.0, 20 Kasım 2018 tarihinde duyurulmuştur.
Kütüphane ile ilgili daha ayrıntılı bilgilere ulaşmak isterseniz, kendi sitesine bir göz atmanızda yarar görüyorum.
Söz konusu kütüphanenin pratik kullanımına yönelik güzel örnekler paylaşan bir site daha var: https://www.pyimagesearch.com/ Her ne kadar arka planda kitap ve kurs pazarlaması bulunsa da, açık şekilde paylaşılan kod ve açıklamaları mutlaka izlemenizi öneririm. Olanaklarınız elveriyorsa Adrian Rosebrock’un kitaplarını almayı, ya da online kurslarına katılmayı düşünebilirsiniz. Elbette bunun için yeterli düzeyde İngilizce bilgisine ihtiyacınız olacak.
Bu ve izleyen bazı yazılarımda PyImageSearch veya benzer siteler tarafından paylaşılan kimi kodları temel alan bazı çalışmalar yayınlamayı düşünüyorum. Bu çalışmaları test ettiğim bilgisayarımda Ubuntu 18.04 işletim sistemi yüklü. Python sürümü 3.6. GPU destekli Tensorflow kurulumundaki sorunları aşmak için gerektiğinde Anaconda da kullanıyorum. IDE sistemim: güncel Pycharm Community sürümü. Örneklerde kullandığım OpenCV sürümü 3.4.3.
Adrian Rosebrock, betiklerinde komut modunu kullanmayı seviyor. Bense parametreleri dışarıdan vermek yerine betiğin içine gömmeyi daha fazla tercih ediyorum. Ayrıca, çok mecbur kalmadıkça ekrana print ettirdiğim ifadelerde geçen Türkçe karakterlerin “olması gerektiği gibi” görünmesini de önemsiyorum.
Lafı daha fazla uzatmadan ilk örneğimizi kodlayalım. Bu örnek bir başka siteden: https://www.hackster.io/mjrobot/real-time-face-recognition-an-end-to-end-project-a10826
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
import cv2 cap = cv2.VideoCapture(0) cap.set(3 ,640) # set Width cap.set(4 ,480) # set Height while(True): ret, frame = cap.read() # frame = cv2.flip(frame, -1) # Flip camera vertically gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.imshow('frame', frame) cv2.imshow('gray', gray) k = cv2.waitKey(30) & 0xff if k == 27 or k==ord('q'): # press 'ESC' or 'q' to quit break cap.release() cv2.destroyAllWindows() |
Betiğimiz webcam görüntülerini tarayıp ekrana yansıtmaktadır.
cap = cv2.VideoCapture(0) satırı, varsayılan webcam cihazını aktif hale getirerek, görüntüleri yakalamasını sağlamaktadır.
cap.set() metodu ile görüntünün en ve yükseklik değerleri belirleniyor.
Sonsuz while döngümüzün içinde görüntü yakalama işlemi cap.read() metodu tarafından gerçekleştirilmekte ve “frame” değişkenine aktarılmaktadır. “ret” değeri okuma işleminin başarılı olup olmadığını saptamaktadır.
cv2.flip() metodu, webcam görüntünüz tepetaklak ise işe yarayacaktır. Eğer webcam görüntünüz normalse, bu satırı -benim yaptığım gibi- devre dışı bırakmanız gerekir.
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) satırı ile “frame” görüntüsünü “GRİ” renge çeviriyoruz.
cv2.COLOR_BGRGRAY parametresindeki “BGR” harfleri (B)lue-(G)reen-(R)ed (mavi-yeşil-kırmızı) kelimelerinden türetilmiştir. OpenCV RGB yerine BGR renk sistemini kullanmaktadır.
cv2.imshow() metodu imajları görünür hale getirmek için kullanılır. “frame” ve “gray” imajlarını ayrı ayrı görselleştiriyoruz.
OpenCV sisteminde olay yakalama mekanizması cv2.waitkey() metodu ile başlatılır. Bu metod kullanılmazsa ne görüntüleme, ne de tuş yakalama olayları gerçekleşebilir.
Döngüyü kırmak için ‘Esc’ veya ‘q’ tuşlarını tanımlıyoruz. Bu tuşlardan herhangi biri tıklandığında döngümüz kırılıyor; cap nesnesi sebest bırakılıyor ve oluşturulan tüm pencereler bellekten temizleniyor.
Eğer istersek görüntü karelerini webcam cihazımız yerine herhangi bir video dosyasından da aynı şekilde okuyabiliriz. Sonraki yazılarımda bu tür örnekleri de ele alacağım.
Örnek betiğimizden gördüğümüz gibi, OpenCV işlerimizi olağanüstü derecede kolaylaştırmaktadır.
Bu kütüphaneyi bir PC veya dizüstü üzerinde olduğu gibi, Raspberry Pi gibi mikro bilgisayarlar üzerinde de çalıştırabilmekteyiz. Bu konuyu da daha sonra ele alacağım.
Eğer bilgisayarınızda OpenCV zaten kuruluysa, örneğimizi de kolayca çalıştırmış olmalısınız.
Ama bu kütüphaneyi ilk kez kuracaksanız, işiniz o kadar kolay olmayabilir. Çünkü bu kütüphane çok geniş bir alana el attığı için pek çok başka kütüphanenin varlığına ihtiyaç duyar. Öncelikle bu kütüphanelerin kurulup hazır hale getirilmesi gerekiyor.
Bu yazıyı daha fazla uzatmamak için OpenCV kurulumunu bir sonraki yazımda ele alacağım.
Beni izlemeye devam edin.
Ahmet Aksoy
(1) – https://docs.opencv.org/3.4/d0/de3/tutorial_py_intro.html