Open Source Computer Vision Library'nin kısaltması olan OpenCV, yapay zeka (AI) ve makine öğreniminde (ML) yaygın olarak kullanılan güçlü ve çok yönlü bir açık kaynak kütüphanesidir. Gerçek zamanlı bilgisayarla görme (CV) görevleri, görüntü işleme ve video analizi için özel olarak tasarlanmış kapsamlı bir araç ve algoritma paketi sunar. Makine öğrenimi uygulayıcıları için OpenCV, temel görüntü yükleme ve manipülasyondan karmaşık sahne anlayışına kadar görevleri mümkün kılan görsel verileri işlemek için temel bir araç seti olarak hizmet eder. OpenCV.org tarafından sürdürülen açık kaynak yapısı, geniş bir topluluğu ve sürekli gelişimi teşvik ederek onu bu alanda bir köşe taşı teknolojisi haline getirmektedir. Windows, Linux, macOS, Android ve iOS dahil olmak üzere çeşitli platformlarda kolayca kullanılabilir ve Python, C++, Java ve MATLAB gibi diller için arayüzler sunar.
Yapay Zeka ve Makine Öğreniminde Uygunluk
OpenCV, özellikle görsel girdilerle uğraşırken yapay zeka ve makine öğrenimi işlem hattında kritik bir rol oynar. Görüntüleri veya videoları makine öğrenimi modellerine beslemeden önce çok önemli bir adım olan veri ön işleme için temel araçlar sağlar. OpenCV tarafından gerçekleştirilen yaygın ön işleme adımları arasında yeniden boyutlandırma, renk alanı dönüştürme (BGR'den RGB'ye gibi, genellikle belirli renk düzenleriyle eğitilen modeller için gereklidir), Gauss bulanıklığı gibi filtreler kullanarak gürültü azaltma ve görüntü kalitesini artırmak veya ilgili özellikleri çıkarmak için çeşitli dönüşümler uygulama yer alır. Bu ön işleme derin öğrenme (DL) modellerinin performansını önemli ölçüde etkiler.
OpenCV sıklıkla aşağıdaki gibi popüler makine öğrenimi çerçeveleri ile birlikte kullanılır PyTorch ve TensorFlow uçtan uca CV uygulamaları oluşturmak için. Bu çerçeveler sinir ağları oluşturmaya ve eğitmeye odaklanırken, OpenCV girdi/çıktı, manipülasyon ve genellikle görsel verilerin sonradan işlenmesini (örneğin sınırlayıcı kutular veya segmentasyon maskeleri çizmek gibi) gerçekleştirir. Ultralytics YOLO. Gerçek zamanlı video akışlarını işlemedeki verimliliği, nesne algılama veya poz tahmini için gerçek zamanlı çıkarım gibi anında görsel analiz gerektiren uygulamalar için vazgeçilmez kılmaktadır.
Temel Özellikler ve Yetenekler
OpenCV, hem klasik bilgisayarla görme tekniklerini hem de modern derin öğrenme entegrasyonu desteğini kapsayan çok çeşitli işlevler (2500'den fazla algoritma) sunar. Temel yetenekler şunları içerir:
- Görüntü ve Video I/O: Çeşitli görüntü(JPEG, PNG, TIFF) ve video formatlarını(AVI, MP4) okuma ve yazma.
- Görüntü İşleme: Yeniden boyutlandırma, kırpma(nesne kırpma kılavuzuna bakın), döndürme, renk uzayı dönüşümleri, filtreleme ve morfolojik dönüşümler gibi temel işlemler.
- Özellik Algılama ve Tanımlama: Görüntülerdeki kilit noktaları tanımlamak için SIFT, SURF (tescilli, son sürümlerde genellikle ORB ile değiştirilir) ve FAST gibi algoritmaların uygulanması.(OpenCV Özellik Algılama belgeleri).
- Nesne Algılama: Modellerin kendisini eğitmese de, önceden eğitilmiş dedektörleri (yüz algılama için Haar kaskadları gibi) çalıştırmak ve DL modellerinden çıktıları işlemek için araçlar sağlar (ör. YOLO11 tahminler).
- Video Analizi: Optik akış, arka plan çıkarma ve nesne izleme algoritmaları gibi hareket analizi için araçlar içerir(izleme moduna bakın).
- Kamera Kalibrasyonu ve 3D Yeniden Yapılandırma: Kamera geometrisini anlamak ve 3D sahneleri yeniden oluşturmak için işlevler(Kamera Kalibrasyon Kılavuzu).
- Makine Öğrenimi Modülü: Destek Vektör Makineleri (SVM ) ve K-En Yakın Komşular (KNN) gibi bazı klasik makine öğrenimi algoritmalarının uygulamalarını içerir, ancak derin öğrenme görevleri genellikle özel çerçevelere dayanır. Ayrıca, aşağıdaki gibi formatlarda dışa aktarılan modelleri yüklemek ve çalıştırmak için işlevler sunar ONNX.(Model İhracat Belgeleri).
OpenCV ve İlgili Kavramlar
OpenCV'yi ilgili terimlerden ayırmak faydalı olacaktır:
- Bilgisayarla Görme (CV): CV, makinelerin görsel bilgileri yorumlamasını sağlamakla ilgilenen geniş bir bilimsel alandır. OpenCV, CV uygulamalarını hayata geçirmek için kullanılan bir araç veya kütüphanedir, alanın kendisi değildir.
- Görüntü İşleme: Bu, öncelikle görüntüleri manipüle etmeye odaklanır (örneğin, kontrastı artırma, gürültüyü giderme). OpenCV kapsamlı görüntü işleme işlevleri sağlar, ancak aynı zamanda bilgisayar görüşü kapsamına giren nesne tanıma ve sahne anlama gibi daha üst düzey görevleri de içerir.
- Makine Öğrenimi Çerçeveleri (PyTorch, TensorFlow): Bu çerçeveler öncelikle sinir ağları ve diğer makine öğrenimi modellerini oluşturmak, eğitmek ve dağıtmak için tasarlanmıştır. OpenCV, görsel verilerin modele girmeden önce (ön işleme) ve çıkarımdan sonra (görselleştirme, son işleme) işlenmesi için gerekli araçları sağlayarak bunları tamamlar. OpenCV bazı makine öğrenimi yeteneklerine sahip olsa da, bu özel çerçevelere kıyasla birincil odak noktası değildir. Örneğin Ultralytics HUB, model eğitimi için PyTorch gibi çerçeveler kullanır ve veri işleme için OpenCV'yi dolaylı veya açık olarak kullanabilir.
Gerçek Dünya Uygulamaları
OpenCV'nin çok yönlülüğü, onu çok sayıda AI/ML uygulamasında her yerde kullanılabilir kılmaktadır:
- Otonom Araçlar: Sürücüsüz araçlarda ve Gelişmiş Sürücü Destek Sistemlerinde (ADAS) OpenCV genellikle kamera ve LiDAR verilerinin ilk işlenmesi için kullanılır. Görevler arasında şerit algılama, özellik eşleştirme veya kontur algılama yoluyla engel tanıma, trafik işareti tanıma (genellikle işlenmiş görüntüleri bir sınıflandırıcıya besleme) ve surround görüntü sistemleri için görüntü birleştirme yer alır. Örneğin, ham kamera kareleri aşağıdaki gibi bir derin öğrenme modeline beslenmeden önce OpenCV kullanılarak ön işleme tabi tutulabilir (bozulma için düzeltilir, parlaklık ayarlanır) YOLOv8 arabaları ve yayaları tespit etmek için.(Waymo'nun teknolojisini keşfedin).
- Tıbbi Görüntü Analizi: OpenCV, çeşitli tıbbi görüntüleme formatlarının (DICOM gibi, genellikle diğer kütüphanelerin yardımıyla) yüklenmesine, anomalilerin daha iyi görülebilmesi için görüntü kontrastının artırılmasına, eşikleme veya havza algoritmaları gibi teknikler kullanılarak ilgilenilen bölgelerin (tümörler veya organlar gibi) segmentlere ayrılmasına ve farklı zamanlarda veya farklı modalitelerden alınan görüntülerin kaydedilmesine yardımcı olur. Bu önceden işlenmiş veriler daha sonra genellikle tanı veya tedavi planlaması için özel makine öğrenimi modelleri tarafından analiz edilir.(Radyolojide Yapay Zeka - RSNA).
Diğer uygulamalar arasında robotik(RobotikteBilgisayarla Görme Entegrasyonu), gözetim(Güvenlik Alarm Sistemleri), artırılmış gerçeklik, üretimde kalite kontrolü ve tarım (örneğin, ürün sağlığı izleme) yer alır. Ultralytics belgeleri, OpenCV işlevlerinin YOLO modelleri ile birlikte ön veya son işlem adımları için kullanılabileceği birçok örnek sunmaktadır.