Neden OpenCV?
OpenCV görüntü işleme kütüphaneleri arasında en popüler ve en çok kullanılanıdır. 2016 verileri itibari ile OpenCV kütüphanesinin toplam indirme sayısı 7 milyonu geçmiştir. Yazılım geliştiriciler için bir kütüphanenin, teknolojinin popülerleşmesinin temel sebebi o teknoloji hakkındaki erişilebilecek kaynak çeşitliliğidir. OpenCV geniş bir kaynağa sahiptir, yapmak istediğiniz şeyle alakalı olarak size yardımcı olacak topluluklar ve bulabileceğiniz teknik dokumanlar oldukça fazladır. Bilişim sektöründe kullanım oranı fazla olan bütün programlama dillerine desteği bulunmaktadır, açık kaynak kodlu olması itibari ile de doğrudan desteği bulunmayan programlama dilleri için ara katmanlar yazılmış ve OpenCV bu dile entegre edilmiştir. Geniş işletim sistemi desteği bulunması itibariyle de geliştiriciler için, platformlar arası uygulama geçişini kolaylaştırmaktadır. Aktif olarak OpenCV kullanan bazı projelere göz atarsak neden en iyisi olduğunu daha iyi anlayabiliriz. Google tarafından cadde ve sokakları haritalamak amacıyla yürütülen street view projesi, NASA tarafından Marsa gönderilen keşif aracı (Curiosity) ile Mars yüzeyini görüntülemek, yorumlamak ve aracın bazı hareketlerini otonom olarak yapabilmek için OpenCV kullanılmıştır.
Neden Java?
Görüntü işleme yazılımları için performans önemli bir kriterdir. Bu yazılımlar yüksek işlemci, grafik kartı ve bellek ihtiyacı duyarlar bu yüzden kullanılan programlama dili ve seçilen platform yazılımın performansı için kritik öneme sahiptir. Daha önceleri görüntü işleme projelerinde C ve C++ programlama dilleri kullanılmaktaydı çünkü bu diller düşük seviyeli olması sebebiyle rakiplerine göre oldukça performanslıydı. Programlama dillerinin çeşitliliğinin artmasıyla birlikte bir çok dil açık kaynak oldu ve toplulukların veya firmaların desteği ile yapılan iyileştirmeler sayesinde performanslarında iyileştirilmeler yapıldı. Java programlama dili JVM’in (Java Virtual Machine) geliştirilmesiyle yazılan kodu daha iyi optimize edebilir hale geldi ve C++ programlama dili kadar performanslı çalışan kodlar üretmeye başladı. Java programlama dilinin platform bağımsızlığı, orta seviye bir dil olması ve proje geliştirmenin oldukça hızlı olması sebebiyle önce çıkmaktadır. Web, mobil, gömülü sistem ve masaüstü projelerin geliştirilebiliyor olması da başlı başına bir seçim nedeni de olabilir. Bu bağlamda OpenCV uygulaması geliştirmede Java tercih edilmektedir. OpenCV dokumanlarına bakıldığında örnekler C++, Java ve Python ağırlıklıdır. Son birkaç yıldır Python yazımının kolay olması, uygulama geliştirme süresini kısaltması gibi özellikleri ile programlamaya yeni başlayan kişiler tarafından kullanılarak popüler olsada performans, büyük proje gelişltirmenin zorluğu gibi sebeplerlede projelerde tercih edilmemektedir, bu durum şimdilik böyle olsada aldığı deskteler ve toplulukların katkıları ile görüntü işlemede tercih edilen bir dil haline gelebilir.