Xamarin.Forms ile Görüntü İşleme – 2

Görüntü İşleme (Image processing)Xamarin

Kendime not” ilki yeni kendi açtığım bir projeden tertemiz her şeyi ile kendim oluşturarak gitmek

ikincisi temiz proje solution’larından örnek projeyi referans alıp paralel gitmek.

Üstte ki notları kendim için dün akşam almıştım, yani ilk bölümü bitirdiğim zaman. Şimdi bugün ise örnek projede ki kodları inceliyorum. Örnek proje Shared Project için tasarlanmış yani Cross-Platform içinde. App.cs ve #if-endif’ler var, buradan anlayabiliyorum. O zaman gözlemlerimi size aktarayım bunun için:

  1. Shared Project için kullanılan kütüphaneler normal EmguCV kütüphaneleri, o zaman EmguCV sitesinden Dll’leri indirip import etmem gerekir.
  2. Cross-Platform Shared Project olmasına rağmen #if-endif’lerde sadece Android kütüphaneleri ve kodları kullanılmış, iOS için de bu kodlar gerekir mi gerekmez mi bilmiyorum ve denemedem bilemeyiz.
  3. Yüz ve göz algılamaları için bildiğiniz üzere “haarcascade_frontalface_default.xml” ve “haarcascade_eye.xml” dosyaları gerekecek, bunu sanırım Dll dosyalarını indirdiğimde klasörün içinde bulmam lazım.

Şidmilik bu üç çıkarımı yerine getireceğim. İlk önce Shared bir Proje oluşturayım… Proje oluşurken sourceforge.net‘ten EmguCV V3.2 indirdim… Nuget’ten indirmedim, projeye dışarıdan dahil edeceğim Dll’leri. EmguCV’nin sitesinde sürüm notlarında Xamarin.Forms’u gördüm, ve kesinlikle EmguCV Xamarin.Forms ile çalışıyor.

Önceden dediğim gibi, EmguCV tarafından oluşturulan örnek proje üzerinden gidiyorum. Projeye Solution koymamışlar, bende aynı adla bir solution oluşturup bütün dosyalarını kaynak dosyalara kopyaladım. Şimdi: 0 Warnings varken 17 Errors var. Bunların tamamı; değil, bir çoğu Dll hatası. Şimdi o Dll’leri ekleyeceğim.

EmguCV’yi kurmayı unutmuşum şimdi hemen onu kurayım. 😀

Gerekli Dll’leri ekliyorum, bu sefer sınıf eksiklikleri çıkıyor. İstediği sınıfları ekliyorum, eklediğim şey orada değil diye error alıyorum. Face algılama sınıfında en çok problem çıktı, istediklerini ekledim ama CvInvoke hatasını çözemedim. Sınıftan metot alıyor kod, CvInvoke sınıfını eklmeme rağmen Rectangle metodunu görmedi. Sonuç: 4 Error ama build olmuyor. O yüzden artık geçeceğim bu yöntemi.

Bu kısımdan sonrası da tertemiz PCL projesi üstüne devam ediyor. Bu da olmazsa Android için gösterebileceğim sadece maalesef.

  1. PCL bir proje oluşturdum.
  2. Camera gibi izinleri verdim.
  3. EmguCV Dll’lerini dahil ettim.

Kamera izini kısmında sıkıntı çıkarsa Xam.Plugin.Media’yı bana unutturmayın! 🙂

Bu ad ile yayından kalkmış plugin. Neyse mühim değil. Sanırım son sürüme uygun kodları bulmam gerekiyor. Capture metodu EmguCV’den kalkmış; VideoCapture var, kodları baktığım yer Capture start demiş ama o kısımda bir hata alıyorum.

Hatayı düzelttim, tabi bunu ben üstteki paragrafı yazdıktan yaklaşık 1 saat sonra yazıyorum. Bir çok şeyi düzelttim ama hala doğru kodları arıyorum. Görüntüyü alıyorum fakat görüntüyü bir resim kutusuna aktarırken resim kutusunun desteklemediği görüntüyü atıyorum. Benim bir şekilde düzeltmem lazım. Bu satırları yazarken aklıma geldi, alınan bir görüntüyü değiştirmem zorlar (imagesourceconverter var ama olsun), ben en başından bu görüntüyü destekleyen şekilde alırsam image source’da gösterdim mi bitecek. Deneyim ben bunu.

 

Üstteki yazıdan itibaren neredeyse 1 gün geçti. Ben ne denediysem deneyim olmadı. Acaba EmguCV’den yetkili birileri ile mi konuşsam? Nasıl olsa Github’a core projesi koymuşlar X.F adı altında. Son deneyeceğim şeyler ise UI Technology’den Native yapıp Android ve iOs farklı tasarımlarını yapıp backend de bağlamak ama bunu şimdi yapmak istemiyorum. Size somut bir şey olsun diye sadece Android’de yapıp Cross-Platform’da da yapasıya kadar bu seriye ekleme yapmayacağım. Şimdi android de nasıl yaparız ona bakalım:

Şunu belirteyim, X.F ile görüntü işleme yapılıyor ama ben şimdiye kadar EmguCV veya OpenCV kullananı görmedim. Google’da çok basit şekilde face detection diye bile aratsanız örnekleri çıkacaktır.

Hani ben size ilk bölümde OpenCV’de biraz açılmak istiyorum demiştim ya! Evet bence ben kesinlikle OpenCV’den devam etmeliyim. 😀 😀 (EmguCV ile iletişime geçtim, yardımları yakındır! Merak etmeyin!) Hem OpenCV öğrenin ya daha iyi, OpenCV’nin Java’ya da desteği var. Java önemli şimdi, burada her ne kadar C# göstersem de ben en çok Java’yı sevmişimdir.

Ama benim suçum değil ki, sadece Destkop’ta çalışan projeleri var. (Kızgın surat!)

Size birkaç örnekler sunacağım; birisini OpenCV’nin basit kendi örneğinden, birisini de Japon’dan aldım. 😀 Japon’un taktik çok değişik ama ben yine de size vereceğim.

Öncelikle OpenCV’nin kendi örneğinden başlayalım. Kodu inceledim, kodda bir çok şey olmasına rağmen sadece camera capture var, anlamış değilim. Bu linke gidiyorsunuz ve “Try” denen butona tıklayıp indirip açıyorsunuz. Sonuç: 

Japon arkadaşımızın ki de bu linke uğrayın, kısa bir tutorial var, daha sonra video açıklama kısmında Github, projesini koymuş ondan yararlanabilirsiniz.

Bu macera burada bitmez. En son olarak sadece Android için göstereceğim (iOS içinde var), face detection var. Bu olay tamamen farklı bir kütüphaneden yapıldığı için göstereceğim. Adını da söyleyim: Mobile Divison. Bu kütüphaneye de bir ara dalalım çünkü Face Detection ile beraber iki işlevi de daha var. Görüşmek üzere! 

Bu yazıyı yazdıktan 6 gün sonra feedback yaptılar, sonuç ne mi? Dediler ki PCL ile uyumlu değil sadece Shared Project ile kullanılabiliyormuş. Ben de dedim hımm. 🙂 Sonra bana dediler, demosunun kopyasını gönderelim mi veya ticari sürümün bir kopyasını gönderelim mi diye, bende dururmuyum. Evet bu noktada durdum. Çünkü daha mesajı göndermedim, diyeceğim ki; kopyaları gönder gelsin. Peki neden 6 gün boş durdum derseniz aslında Ubuntu ile uğraştım. Java ile OpenCV Image Processing konularına başlamayı düşünüyorum. Referans olarak da OpenCV’nin kendi tutorialları var. Daha sonrasında yabancı bir kaynak referansı ile daha da gelişmeyi planlıyorum. Tabi kendime yapar mıyım sadece, sizleri de düşünüyorum ve Image Processing’i sadece Blog sayfama özel paylaşmayı düşünüyorum.

Previous
Xamarin.Forms ile Görüntü İşleme
Next
Xamarin.Forms Event Handler ile Sayfa Boyutu – Bölüm 21

Leave a comment

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