OpenCV, açık kaynak kodlu, platformlar arası çalışan, bilgisayarla görme (computer vision) ve makine öğrenimi (machine learning) alanlarına yönelik bir yazılım kütüphanesidir. İlk olarak 2000 yılında Intel tarafından başlatılan proje, günümüzde dünya genelinde hem akademik hem de endüstriyel kullanımlarda yaygın olarak tercih edilmektedir. Apache 2 lisansı ile yayınlanan OpenCV, ticari ve akademik projelerde ücretsiz olarak kullanılabilir ve değiştirilebilir.
OpenCV’nin temel amacı, gerçek zamanlı bilgisayar görüşü uygulamaları geliştirmeyi kolaylaştırmak ve hızlandırmaktır. Görüntü işleme, nesne tanıma, yüz algılama, video analizi, kamera kalibrasyonu, stereo görüş ve hareket takibi gibi birçok alanda uygulama desteği sunar. 2500’ün üzerinde optimize edilmiş algoritma barındıran bu kütüphane, klasik görüntü işleme yöntemlerinden ileri düzey makine öğrenimi uygulamalarına kadar geniş bir spektruma hitap eder.
Özellikler
- Görüntü ve Video İşleme: Filtreleme, iyileştirme, kenar algılama, dönüştürme ve biçim değiştirme gibi temel görüntü işleme işlemleri desteklenir.
- Gerçek Zamanlı Uygulama: Nesne takibi, yüz tanıma, hareket tespiti gibi gerçek zamanlı işlemler yüksek performansla gerçekleştirilebilir.
- Makine Öğrenimi Entegrasyonu: İstatistiksel desen tanıma, kümeleme ve sınıflandırma gibi görevler için genel amaçlı bir ML modülü içerir.
- GPU Desteği: NVIDIA CUDA ve OpenCL gibi teknolojilerle hızlandırılmış görüntü işleme desteği sağlar.
- Derin Öğrenme Uyumluluğu: TensorFlow, PyTorch ve Caffe gibi çerçevelerle önceden eğitilmiş modellerin kullanımı desteklenir.
- Platform ve Dil Desteği: Windows, Linux, macOS, Android ve iOS gibi platformlarda çalışır; C++, Python, Java ve MATLAB gibi popüler programlama dillerini destekler.
Uygulama Alanları
OpenCV, çok çeşitli sektör ve alanlarda uygulama bulmuştur. Bu alanlar arasında şunlar öne çıkar:
- Güvenlik ve Gözetim: Yüz tanıma, kırmızı göz düzeltme, hareket algılama, izinsiz giriş tespiti.
- Otonom Araçlar: Yol, araç ve yaya tanıma; kamera kalibrasyonu ve 3B nokta bulutu üretimi.
- Tıbbi Görüntüleme: Gürültü azaltma, nesne analizi, doku sınıflandırma.
- Sanayi ve Üretim: Ürün denetimi, etiket tanıma, otomatik hata tespiti.
- Artırılmış Gerçeklik: Sahne tanıma, işaretleyici takibi ve görüntü birleştirme.
- Robotik: Kamera tabanlı yön bulma ve nesne toplama görevleri.
OpenCV ile Gerçek Zamanlı Nesne Algılama - Görsel Linki
OpenCV ile Kenar Tanıma - Görsel Linki
Kullanım ve Topluluk
OpenCV, dünya genelinde 47.000’den fazla katkıda bulunan geliştiriciye ve milyonlarca kullanıcıya sahiptir. Her hafta ortalama 29.000 kez indirilen kütüphane, aktif bir GitHub deposuna ve kapsamlı bir dokümantasyon kaynağına sahiptir. Google, Microsoft, Intel, Toyota, IBM, Honda, Sony gibi büyük şirketler; Stanford, MIT, CMU gibi saygın araştırma kurumları bu kütüphaneyi projelerinde kullanmaktadır.
Örnek Uygulamalar
- Yüz tanıma sistemleri (güvenlik, biyometrik doğrulama)
- Otonom robotlarda görsel yön bulma
- İnsansız hava araçlarında (İHA) nesne algılama
- Medikal görüntülerde anomali tespiti
- Fabrikada üretim bandında ürün kontrolü
- Şehir gözetim sistemlerinde davranış analizi
Kurulum ve Erişim
Python kullanıcıları için pip install opencv-python komutu ile kolayca yüklenebilir. Geliştiriciler ayrıca Git üzerinden kaynak kodlara erişerek özelleştirme yapabilir. Tüm belgeler ve örnek projeler https://opencv.org adresinden edinilebilir.
OpenCV Basit Kullanım Örnekleri
- Görüntü Okuma
img= cv2.imread(‘görüntü dosya yolu’) cv2.imshow('OutputImage', img)
- Görüntü Yazma
img= cv2.imwrite(‘görüntü dosya yolu’) cv2.imshow('Orjinal görüntü', img)
- Görüntü Döndürme
img = cv2.imread("resimyolu.jpg") yükseklik, genişlik= img.shape[: 2] rotation_matrix = cv2.getRotationMatrix2D((genişlik/ 2, yükseklik/ 2), 70, .5) döndürülmüş_görüntü = cv2.warpAffine(img, rotation_matrix, (width, height)) cv2.imshow('Döndürülmüş görüntü', döndürülmüş_görüntü) cv2.imshow('Ham görüntü', img)
- Video Çekimi
video = cv2.VideoCapture(0) check, frame = video.read()
- Görüntü Bulandırma
img = cv2.imread("resimyolu.jpg") cv2.imshow('Ham Görüntü', img) cv2.waitKey(0) kernel = np.ones((7, 7), np.float32) / 49 blurred = cv2.filter2D(img, -1, kernel) //görüntünün bulanıklaştırıldığı kısım cv2.imshow('Bulanık Görüntü', blurred)
- Kenar Tespiti
canny = cv2.Canny(img, 20, 170) cv2.imshow('Tespit Edilen Nesne', canny) //nesnelerin kenarlıkları tespit edilir.