Merhaba arkadaşlar bugün sizlerle birlikte EmguCV aracılığıyla kameradan görüntü alma işlemini gerçekleştireceğiz.
İsterseniz uygulamaya geçmeden önce bu kütüphaneyi biraz yanıyalım.
EmguCV bir OpenCV Framework' ünün .Net dilleri üzerinde oluşturulmuş bir kütüphanesidir.
.Net Framework çatısı altında bulunan C#, VB, Xamarin veya Unity ile görüntü işleme uygulamalarını geliştirilmesini kolaylaştırmaktadır ayrıca Windows , Linux, Mac OS X, İOS, Android ve Windows Phone platformlarında da çalışabilir ve güncelliğini devam ettirmektedir.
C# da görüntü işleme için bu kütüphanesinin yani OpenCv ve EmguCV dll lerini kullanacağız.EmguCV kütüphane dosyalarına buradaki resmi adresinden ulaşabilirsiniz.
Bizim projemizde kullanacağımız dosyaları buradan indirebilirsiniz.Biz bu projede dosya sürümü "2.4.10" olanını kullanacağız.
Yukarıda vermiş olduğumuz adreslerden temin ettiğiniz EmguCV kütüphanesinin içerisindeki dosya ve klasörler aşağıdaki gibi olacaktır.

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

Son olarak da “bin” -> “x86” klasörü altındaki .dll dosyalarını Existing Item(Var Olan Öğe...) olarak projeye entegre edeceğiz.

Yukarıda da gördüğünüz gibi projemize sağ tıklayarak “Add (Ekle)” -> “Existing Item (Var Olan Öğe...)” yolunu takip ediyoruz. Bu işlemden sonra açılan pencerede yukarıda bahsettiğimiz dizine gidip var olan tüm dosyaları aşağıdaki resimde olduğu gibi seçerek projemize entegre ediyoruz.

İlgili dosyaları entegre ettikten sonra hepsini seçip sağ tıklayarak “Properties(Özellikler)” 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 (Çıktı Dizinine Kopyala)” bölümünü “Copy always (Her Zaman Kopyala)” olarak değiştiriyoruz.

Eğer son işlemi yapmasaydı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)" gibi hatalarla karşılaşacaktık.Tabiki bu işlem sayesinde hataları şimdiden sadeleştirmiş olduk.
Şimdi sırada EmguCV kütüphanesini kullanarak kamera görüntüsünü elde etmeye.
Formumuzda bir adet pictureBox1 olması yeterlidir.
using Emgu.CV;
namespace i ekliyoruz,
private void Form1_Load(object sender, EventArgs e)
{
//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;
};
}

Kaynakça