Bilgisayar Mühendisliği

OpenCV Nedir? OpenCV Ne İşe Yarar?

OpenCV Nedir?

OpenCV bazı dillerle entegre olup kamera ve görüntüler üzerinde işlemler yapabildiğimiz görüntü işleme alanında en yaygın kullanılan açık kaynak kodlu bir kütüphanedir. Birçok bileşeni bulunan OpenCV, günümüzde çoğu alanda kullanılmaktadır. Bu yazımda OpenCV nedir, OpenCV ne işe yarar? Sorularına detaylı şekilde cevap vereceğim.

OpenCV nedir?

OpenCV’nin  açılımı; Open Source Computer Vision Library’dir.  Adından da anladığımız üzere OpenCV, açık kaynak kodlu bilgisayar görüsü kütüphanesidir.

OpenCV ilk olarak Gray Bradsky tarafından Intel’in Rusya’daki laboratuvarlarında  1999 yılında geliştirildi ilk sürümü ise 2000 yılında piyasaya Alfa OpenCV olarak çıktı. İlk etapta C programlama dili ile piyasaya sürülen OpenCV’nin  daha sonra birçok algoritması C++ ile yazıldı. Açık kaynak kodlu olan OpenCV, BSD lisansına sahiptir. BSD lisansı; OpenCV kütüphanesini herkesin ücretsiz bir şekilde kullanmasına olanak sağlamaktadır.

OpenCV’nin başlıca kullanıcıları arasında Windows, Honda, Toyoto, Microsoft ve Google gibi büyük şirketler vardır. Ayrıca OpenCV;  Mac , Windows, IOS, Android gibi işletim sistemlerinde de sorunsuz şekilde çalışmaktadır.

OpenCV Ne İşe Yarar?

OpenCV nedir öğrendiğimize göre gelin bir de OpenCV ne işe yarar sorusuna cevap arayalım.

OpenCV kütüphanesi; Makine öğrenmesi, derin öğrenme gibi yapay zeka alanlarında kullanılan başlıca kütüphanelerdendir.

OpenCV web kameraları işlemleri, resim açma, efekt ekleme veya şekil çizme gibi işlevlerde kullanılabilirken, video dosyaları veya kameralar ile görsel bilgilerin alınmasını, analiz edilmesini veya değiştirilmesini destekleyen yüzlerce özelliği de içerir.

OpenCV kütüphanesinin daha gelişmiş kısımlarında ise; yüzleri algılamak, hareketi izlemek ve şekilleri analiz etmek, nesneleri tanımak, yorumlamak için önemli algoritmalar vardır. Bu kütüphanedeki  algoritmaların çoğu, ürün incelemesi, tıbbi görüntüleme, robotik, yüz ve hareket tanıma ve insan-bilgisayar etkileşimi dahil olmak üzere bilgisayarla görmenin belirli alanlarıyla ilgilidir.

Kısaca günümüzde gerçek zamanlı işlemlerde en yaygın kullanılan görüntü işleme kütüphanesi olan openCV’nin yapabileceklerinin bir sınırı yoktur.

OpenCV Çalışma Mantığı

OpenCV Ne İşe Yarar?

OpenCV kullanırken bilgisayarın görüntüyü anlayabilmesi için matrislerden yardım alırız. Bilgisayar aracılığıyla Matrise dönüştürülen resim 2 boyutlu hale geldiğinde oluşan görüntüdeki her bir alana piksel denir. Pikseller, görüntü işleme basamaklarını bizim için kolaylaştırır ve yapmak istediğimiz görüntü işleme basamaklarını artık pikseller üzerinden gerçekleştirebiliriz.

RGB (Red, Green, Blue) renk skalasına göre pikseller [0-255] arası değer alır ve bunu 8 bitlik 3 kanallı olarak gerçekleştirir.

Örneğin RGB göre;  [0,0,0]  pikseli siyah, [255,255,255] pikseli beyaz rengi açığa çıkarır.  Eğer farklı renkler elde etmek istersek piksel değerlerini değiştirmemiz yeterlidir.

OpenCV Bileşenleri

OpenCV’yi daha iyi anlayabilmek için bileşenlerini bilmek gerekir.

OpenCV 3.x Versiyonuna Göre;

  • Core Bileşeni: Görüntü üzerine çizim yapabilmek için kullanılabilecek metotları ve XML ,YAML işlemleri için gerekli bileşenleri bulundurur.
  • HighgGUİ Bileşeni: Resim görüntüleme, silme,kaydetme, pencereleri yönetme ve grafiksel kullanıcı arabirimleri için gerekli olabilecek metotları bulundurur.
  • Imgproc Bileşeni: Filtreleme operatörleri, kenar bulma, nesne belirleme, renk uzayı yönetimi, renk yönetimi, şekil eşleştirme, yapısal analiz ve eşikleme gibi neredeyse tüm fonksiyonları içine alan bir pakettir.
  • Imgcodecs Bileşens: Dosya sistemi üzerinden resim ve video okuma/yazma işlemlerini yerine getiren metotları bulundurur.
  • Videoio Bileşeni: Kameralara ve video cihazlarına erişmek, görüntü almak ve görüntü yazmak için gerekli metotları barındırır.
  • Ml Bileşeni: Bayes, SVM, YSA ve benzeri yapay öğrenme algoritmalarından oluşan bir pakettir.

OpenCV Nerelerde Kullanılır?

OpenCV kullanım alanları oldukça geniştir.

  • Nesne Tanımala / Nesne Tespiti
  • Yüz algılama ve Tanıma
  • Makine öğrenmesi / Derin Öğrenme
  • Yapay Zeka Teknolojileri / Robot Teknolojileri
  • Savunma Sanayi / İnsansız Hava araçları
  • Videolarda eylemleri sınıflandırma.
  • Kamera hareketlerini takip etme.
  • Filtreleme işlemleri (Snapchat, instagram)
  • Hareket eden nesneleri takip etme.
  • Nesnelerin 3B modellerini çıkarma.
  • Bir resmin veri tabanından benzer resimlerini bulma.
  • Göz hareketlerini takip etme.
  • Montaj Hatları

Ve daha bir çok alanda görüntü işleme ile karşılaşıyoruz.

OpenCV Programlama Dilleri

OpenCV tek başına işlev görmez çalışabilmesi için bir programlama diline ihtiyaç duyar.

OpenCV ile entegre olabilecek başlıca programlama dilleri:

  • C++
  • C
  • Matlab
  • Python
  • Java
  • C#

OpenCV Nasıl Kurulur?

Gelelim OpenCV ile ilgili en merak edilen konulardan birisine: OpenCV kurulumu. OpenCV’yi bilgisayarınıza kurmanın birçok yolu vardır.

OpenCV Nasıl Kurulur?

  • CMD komut ekranınızı açıp “pip install opencv-python” Şeklinde işlem gerçekleştirirseniz opencv’yi bilgisayarınıza başarılı bir şekilde kurmuş olursunuz.
  • Eğer IDE olarak pycharm kullanıyorsanız pycharmdan terminal kısmına girip; Pip install opencv-python Şeklinde yazarak kurulumunu gerçekleştirebilirsiniz.
  • Pycharm için ‘python packages’ kısmından ‘opencv’ yazarak indirmeyi gerçekleştirebilirsiniz. 

OpenCV Uygulamaları

OpenCV ile görüntü işlemeyi daha iyi anlayabilmeniz için birkaç OpenCV uygulaması yapalım.

OpenCV İle Resim Açma

import cv2 # opencv kütüphanemizi kullanırken CV2 ile import ediyoruz.
taze_muhendis=cv2.imread("taze_muhendis.jpg",)
# açmak istediğimiz resimin adını imread fonksiyonumuzun içine ekleyip
# tazemuhendis adındaki değişkene atadık
cv2.imshow(" taze muhendis logo",taze_muhendis)
# imshow fonkiyonu ile pencere(taze muhendis logo) tanımlıyoruz
# yazdığımızı ilk parametre pencere adı
# ikincisi ise fotoğrafımızı atadığımız değişken adı
cv2.waitKey(0)
# penceremizin ekranda kalmasını sağlıyor
# saniye cinsinden parametre alıyor
# '0'(sıfır) sonsuz anlamına geliyor

Burada dikkat etmemiz gereken en önemli şey; kullandığımız resim dosyası ile yazdığımız kodun aynı klasör içinde bulunması gerekiyor. Eğer resim dosyası aynı klasörde bulunmuyorsa o zaman resim adını yazmak yerine bulunduğu yerin dosya konumu yazmamız gerekir.

Kodu çalıştırdığımız zaman ekran çıktısı şöyle olur:

OpenCV İle Resim Üzerine Daire Çizimi

import cv2  # opencv kütüphanemizi dahil ediyoruz
#circile fonksiyonu ile  daire oluşturabiliriz
taze_muhendis=cv2.imread("taze_muhendis.jpg")
merkez=(65,70)
renk=(125,120,20)  #
cv2.circle(taze_muhendis,merkez,70,renk,7) #kalem kalınlığını -1 yazarsam dairenin içi dolu olur
#circle(matris_adı,merkez,yarıçap,renk,kalem_kalınlığı)
cv2.imshow("taze muhendis site logosu ",taze_muhendis)
cv2.waitKey(0)

Klasörümüze eklediğimiz Taze Mühendis logo resmini imread() fonksiyonu ile alarak taze_muhendis adındaki değişkene(matrise) aktarıyoruz. Daha sonra oluştaracağımız çemberin merkez nokta koordinatını giriyoruz. Oluşturacağımız dairenin rengini de RGB renk skalasına göre belirledikten sonra daire oluşturan circle() komutumuz ile resmimizi atadığımız taze_muhendis değişkenine işlemleri atıyoruz. Daha sonra üzerinde işlem gerçekleştirdiğimiz değişkenimizi imshow() komutu sayesinde pencere oluşturarak, pencerenin içine değişkenimizi ekrana yazdırıyoruz. Tabi oluşturduğumuz pencerenin ekranda kalması için son olarak waitKey(0) komutunu kullanıyoruz.

Kodu çalıştırdığımız zaman ekran çıktısı şöyle olur:

OpenCV ile yapabileceklerimizin bir sınırı yoktur, burda size sadece birkaç uygulama göstermek istedim.

OpenCV Türkçe Kaynak Önerileri

OpenCV alanında kendinizi geliştirmek için kaynak arıyorsanız aşağıdaki kitaplara göz atabilirsiniz:

  • Murat Işık , OpenCV ve Python ile görüntü İşleme , seçkin Yayıncılık
  • Birol Kuyumcu, OpenCV: Görüntü İşleme Ve Yapay Zeka , Level Yayıncılık
  • Ahmet Aksoy, OpenCV Ve Python Projeleri , Abaküs Yayıncılık

Görüntü İşleme Kütüphaneleri

Görüntü işleme yapmak için seçeceğimiz kütüphanenin kullanım amacı çok önemlidir. Küçük çaplı görüntü işlemleri için büyük çaplı kütüphaneler eklemeye gerek yoktur.

Matlab: Matlab’a pek görüntü işleme kütüphanesi denilmese de içinde temel yapıda görüntü işlemleri için algoritmalar barındırıyor. Performansın önemli olduğu programlarda temel görüntü işlemleri için tercih edilir. Ayrıca Matlab’ı OpenCV ile birlikte de kullanabilirsiniz.

Halcon: Endüstriyel projelerde kullanılan C, C++, C#  gibi programlama dilleri için kütüphaneleri ve çok işlevli hazır fonksiyonları bulunan yapay zeka odaklı ticari görüntü işleme kütüphanesidir. Halcon, OpenCV gibi açık kaynak kodlu ve ücretsiz değildir.

OpenFrameworks: Açık kaynak olarak geliştirilen OpenFrameworks kütüphanesi, C++ programlama dili için geliştirildi. Ayrıca OS X, Linux, Embedded Linux (ARM) , iOS , Android  gibi platformlarda çalışabilir. OpenFrameworks kütüphanesi fonksiyon yapısı ile standart hale getirilmiş olan işlevleri OpenCV’ye kıyasla %50 daha hızlı gerçekleştirebiliyor.  

CIMG: Açık kaynak kodlu sadece C++ programlama dili destekli görüntü işleme kütüphanesidir. Windows, Linux ve OS X gibi işletim sistemi platformlarında çalışabilir. CIMG kütüphanesi OpenCV kadar yaygın ve gelişmiş bir kütüphane değildir

Fiji: Java platformu için geliştirilmiş açık kaynak kodlu GPL lisansına sahip bir görüntü işleme kütüphanesidir. Windows, Linux ve MAC OSX Intel gibi işletim sistemlerinde ve  32-bit veya 64-bit üzerinde çalışır. Bilimsel görüntü analizi için geliştirilmiştir. Genetik, hücre biyolojisi, nörobilim gibi alanlar için özelleştirilmiş algoritmalara sahiptir.

En sık kullanılan görüntü kütüphanelerine kıyasla Endrov, ImageJ, Lead tools, Pink, Image Magick, Boost ise daha  az kullanılan diğer görüntü işleme kütüphanelerinden bazılarıdır.

Bu yazımda OpenCV nedir, OpenCV ne işe yarar? Gibi sorulara cevap verip OpenCV bileşenlerinden bahsettim. Umarım faydalı bir yazı olmuştur. Görüşlerinizi ve sorularınızı yorum olarak benimle paylaşabilirsiniz.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu