EmguCV – Projeye Entegrasyonu ve Kamera Görüntüsü Alma

Merhaba,

EmguCV, AForge.NET ve Accord.NET kütüphanelerinden oldukça daha fazla ve daha hassas image processing algoritması barındıran ve görüntü işleme üzerine tasarlanmış olan OpenCV kütüphanesinin .NET ortamına dönüşümsel implemantasyonunu sağlayan bir wrapperdır. Bu içeriğimizde görüntü işleme üzerine güçlü nitelikleri olan bu kütüphanenin öncelikle bir projeye nasıl entegrasyonunun sağlandığını inceleyecek, ardından sistemdeki kameradan görüntünün nasıl elde edildiğini kaleme alıyor olacağız. Bundan sonraki içeriklerimizde ise EmguCV ile ilgilide onlarca verimli çalışmaya imza atacağımızın müjdesini baştan vermeyi istiyorum…

Öncelikle EmguCV kütüphanesinin dosyalarına buradaki resmi adresinden erişebilirsiniz. EmguCV’nin resmi sayfasından ilgili download penceresine göz atarsanız eğer buradan da gördüğünüz gibi EmguCV sürümleriyle karşılaşacaksınız. Bu makale kaleme alındığı tarihte EmguCV’nin en son sürümü “3.2” versiyonuna sahiptir. Her ne kadar bir ürünü kullanırken farz olan o ürünün son versiyonunu tercih etmek olsada, ben bu ve bundan sonraki çoğu makalemde “2.4.10” versiyonunu tercih ediyor olacağım. Bu tercihimin sebebini konumuzun dışında olsada merak edenler olacağı için açıklamakta fayda vardır.

Eğer ki; EmguCV yahut OpenCV kütüphanelerini araştırırken muhtemelen ilk olarak bu siteye gelmeden önce onlarca içerik üzerinde araştırma yapmışsınızdır. Haliyle bu kütüphaneler üzerinde fazla kaynağın bulunmadığı, bulunsada çalışma problemleri yaşandığı konusunda benimle hemfikirsinizdir. İşte ahval bu iken elimizdeki sınırlı kaynaklardaki anlatım ve izahatlerin bir çoğu “2.4.10” versiyonuna uygun bir şekilde çalışmakta, bu versiyondan sonraki sürümlerde kodun yapısı ve inşası değiştirildiği için beklenmedik hatalarla karşılaşılmaktadır. İşte bu yüzden gittiği yere kadar belirttiğim versiyon ile çalışmalarımızı gerçekleştireceğiz.

Velhasıl… Konumuza devam edelim.

Yukarıda vermiş olduğum adreslerden temin ettiğimiz EmguCV kütüphanesinin içerisindeki dosya ve klasörler aşağıdaki gibi olacaktır.
EmguCV - Projeye Entegrasyonu ve Kamera Görüntüsü Alma

Çalışma yapacağımız projemize EmguCV kütüphanesinin .dll dosyalarını “bin” klasörü içerisinden referans olarak yükleyeceğiz.

EmguCV - Projeye Entegrasyonu ve Kamera Görüntüsü Alma

Bu işlemden sonra artık kodlamaya geçebiliriz gibi gelsede göz ardı edilmemesi gereken bir husus daha vardır. O da “bin” -> “x86” klasörü altındaki .dll dosyalarını Existing Item olarak projeye entegre etme gereksinimidir.
EmguCV - Projeye Entegrasyonu ve Kamera Görüntüsü Alma
Yukarıdaki ekran görüntüsünde görüldüğü üzere projemize sağ tıklayarak “Add” -> “Existing Item” kombinasyonunu takip ediyoruz. Bu işlemden sonra açılan pencerede yukarıda bahsettiğimiz dizine gidip var olan tüm dosyaları aşağıdaki gibi seçerek projemize entegre ediyoruz.

EmguCV - Projeye Entegrasyonu ve Kamera Görüntüsü Alma

İlgili dosyaları entegre ettikten sonra hepsini seçip sağ tıklayarak “Properties” sekmesine tıklıyoruz ve açılan ilgili pencerede aşağıdaki ekran görüntüsünde görüldüğü üzere “Copy to Output Directory” bölümünü “Copy always” olarak değiştiriyoruz.

EmguCV - Projeye Entegrasyonu ve Kamera Görüntüsü Alma

Eğer ki bu son işlemi yapmamış olsaydık;

System.TypeInitializationException: ”Emgu.CV.CvInvoke’ tür başlatıcısı özel durum döndürdü.’
DllNotFoundException: DLL ‘opencv_core2410’ yüklenemedi: Belirtilen modül bulunamadı. (HRESULT özel durum döndürdü: 0x8007007E)

EmguCV - Projeye Entegrasyonu ve Kamera Görüntüsü Alma
gibi hatalarla karşılaşacaktık. Tabi ki de bu işlem sayesinde bu tarz hatalardan çalışmamızı peşinen sadeleştirmiş olduk.

Eveett… Artık EmguCV kütüphanesinin entegrasyonunu sağ salim sağlamış bulunmaktayız.

Şimdi sıra geldi EmguCV kütüphanesini kullanarak kamera görüntüsünü elde etmeye.

            //Sistemdeki ilk kamerayı elde ediyoruz.
            Capture capture = new Capture();
            //Görüntü almayı başlatıyoruz.
            capture.Start();
            capture.ImageGrabbed += (a, b) =>
            {
                Bitmap image = capture.RetrieveBgrFrame().Bitmap;
                pictureBox1.Image = image;
            };

EmguCV - Projeye Entegrasyonu ve Kamera Görüntüsü Alma

İşte yapmamız gereken işlemler bu kadar arkadaşlar. EmguCV ile ilgili bir sonraki konumuzda face detection-yüz algılama işlemi üzerine konuşuyor olacağımızı şimdiden bildiririm.

O halde şimdilik hoşçakalın…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

4 Cevaplar

  1. seda dedi ki:

    Teşekkür ederim çok güzel anlatım bu hatayı çözememiştim

  1. 27 Temmuz 2017

    […] şu adresteki yazımızda anlatıldığı gibi EmguCV ile ilgili tüm dll entegrasyon işlemlerinin […]

  2. 27 Temmuz 2017

    […] şimdi asıl konumuzu inşa ederek üzerine yoğunlaşabiliriz. Önceki yazılarımda EmguCV ile kameradan nasıl görüntü alındığını ve yüzün nasıl algılandığını ele almıştım. O yüzden hiç hız kaybetmeden bu konuların […]

Bir Cevap Yazın

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

CAPTCHA (Şahıs Denetim Kodu) Resmi

*

Copy Protected by Chetan's WP-Copyprotect.