Birkaç seferdir oğlumla yapacağımız yaz projesinden bahsediyor ve ufak ufak kendimizi hazırladığımızdan bahsediyordum. Konuları birbiri ile ilişkilendirerek bugün de devam ediyoruz. Artık bu hızla devam edersek yaz bir yana, haftaya proje bitecek ve yeni bir proje aramak durumunda kalacağız diye korkmuyor değilim. Neyse, projemizin iş sırasında C# ile Web kamerasından görüntü almak vardı. Hatırlarsanız önceki bir yazımda da android tabanlı cep telefonumuzu web kamerası haline getirmiştik (Link). Şimdi telefonumuzdan yaptığımız çok fonksiyonlu web kameramızın görüntüsünü, C# ile yaptığımız uygulamamız üzerine nasıl aldığımızı paylaşacağız. Gözünüzde canlanabilmesi için uygulamanın web kamerası entegre edilmiş son halinin görüntüsü şöyle olacak;
Sizin resim olarak gördüğünü ama aslıda akan video’nun üzerinde oğlum, elinde konu mankenimiz olan Tankımız ve yanında sıkı bir Scratch geliştiricisi olan komşumuz Eylül‘ü görüyorsunuz
(Resmin üzerine tıklayarak büyütebilirsiniz.)
Şu aşamada konumuz kamera görüntüsü almak, o sebeple yön butonlarının işlevi bulunmamaktadır. Zaten zaman içinde onuda paylaşıyor olacağım.
Araştırmalarım sırasında gördüm ki toolbox içinde bulunan webcam_capture.dll isimli bir kütüphane ile de görüntü işlemi kolaylıkla yapılabiliyor. Fakat uzun vadede, farklı fikirleri geliştirdiğiniz zaman bu kütüphane image-processing konusunda yetersiz kalıyor. Ben birkaç deneme yaptım ve çok efektif bulmadım. Bu konuda meraklı iseniz sizinde deneyimlemeniz gerektiğini düşünüyorum.
Biz uygulamamızı sonraki fikirlerimizi/hayallerimizi de öngörerek AForge framework’ü ile geliştiriyor olacağız.
AForge geliştiricileri framework’ü şöyle özetlemişler;
AForge.NET is a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence – image processing, neural networks, genetic algorithms, machine learning, robotics, etc.
üzerine de söylenecek başka bir şey yok diyorum 🙂
AForge Framework’ü indirmek isterseniz linki şöyle;
http://www.aforgenet.com/framework/downloads.html
Hadi başlayalım
Form üzerine;
- Video Streaming için 1 adet PictureBox
- WebCam Driver’ları seçebilelim diye 1 adet Combobox
- Yayını durdurup, başlatabilmek içinse 1 adet buton koydum
Uygulamamıza AForge frameworkünün 2 namespace’ini ekliyoruz : Video ve Video.DirectShow
using System; using System.Collections.Generic; //using System.ComponentModel; //using System.Data; using System.Drawing; using System.Linq; //using System.Text; //using System.Threading.Tasks; using System.Windows.Forms; using AForge.Video; using AForge.Video.DirectShow;
Ben kullanılmayan namespace’leri kapattım, siz dilerseniz direkt silebilirsiniz.
Kodları paylaşayım;
Formun Load olayı;
private void Form1_Load(object sender, EventArgs e) { videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); foreach (FilterInfo device in videoDevices) { comboBox1.Items.Add(device.Name); } videoSource = new VideoCaptureDevice(); }
Butonun Click olayı;
private void button1_Click(object sender, EventArgs e) { if (videoSource.IsRunning) { videoSource.Stop(); pictureBox1.Image = null; pictureBox1.Invalidate(); } else { videoSource = new VideoCaptureDevice(videoDevices[comboBox1.SelectedIndex].MonikerString); videoSource.NewFrame += videoSource_NewFrame; videoSource.Start(); } }
videoSource değişkenimizden türettiğimiz NewFrame metodu;
void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs) { //throw new NotImplementedException(); Bitmap image = (Bitmap)eventArgs.Frame.Clone(); pictureBox1.Image = image; }
Form kapanırken çalışmasını istediğimiz form’un Closing olayı;
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (videoSource.IsRunning) { videoSource.Stop(); } }
Hakan Müştak @2016/04
abi süper olmuş. devamı olacakmı
Olmasını ümit ediyorum. Zaman buldukça gelişiyor ve geliştiriyoruz.
Bu çalışmayı bitirme ödevi olarak satın almak istesek tüm kodlarıyla verirmisiniz
Bunu satıyor musunuz? Paket olarak kaç lira olur?
Düşündüğün kadar zor değil, bir yerlerden başlarsan kısa sürede daha iyini yaparsın. Yeter ki başla! (bende amatörüm)
bunu sql veri tabanına kayıt ederken yol göstermek için ne yapmalıyız ?
çekilen resmi sql veri tabanına kayıtlı olarak ve dataGridwiev de gösterimli uygulamasını anlatırmısınız ??
Şurada (benim gibi) aradığın tüm cevapları bulacağını zannediyorum : http://www.aforgenet.com/framework/docs/
videoSource ve videoDevices değişkenlerini nerde oluşturdunuz? Kodlar orada hata veriyor
Her ikisini de formun load eventi içinde nesne olarak gözüküyor.