Bu yazımızda Aforge kütüphanelerini kullanarak C# Windows Formda WebCam kullanarak görüntü alma yani fotoğraf çekme ve kaydetme işlemlerini gerçekleştiren bir örnek gerçekleştireceğiz.
Örneğimizi gerçekleştirmek üzere aşağıdaki formu oluşturalım.
Form tasarımını incelediğimizde bilgisayara bağlı olan kameraları listeleyeceğimiz 1 adet Combobox, Görüntüleme işlemleri için 2 adet PictureBox, Kayıt işleminde kullanacağımız 1 adet SaveFileDialog ve Button’ larımızı görüyoruz. “Kamera Aç” kamerayı açarak pictureBox kontrolünde görüntünün oluşmasını, “Fotoğraf Çek” butonu o andaki görüntünün yakalanarak PictureBox2‘ye aktarılmasını, “Kamerayı Kapat” butonu ise kameranın açık ise kapatılamasını sağlıyor. Kameranın kapatılması işlemini eğer unutulursa Form kapatılırken de gerçekleştireceğiz. Bu işlemi Form_Closing eventında gerçekleştireceğiz.
Şimdi Adım adım kodlarımıza geçelim.
İlk olarak Aforge kütüphanesini buradan indirerek başlayalım.
İndirme işlemi tamamlandıktan sonra dosyaları zip içerinden çıkarıyoruz.
Şimdi projemizde sağ tıklayarak Add Reference diyoruz.
Burada karşımıza gelen pencerede;
Browse diyerek zip içerisinde çıkardığımız Release klasörü altında Aforge.Video.DirectShow.dll ve Aforge.Video.dll dosyalarını referans olarak ekliyoruz. Şimdi kodlarımıza geçebiliriz. Kodların tamamını aşağıya kopyalıyorum. Gerekli açıklamaları bu bölümden de görebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
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; //Referansları ekliyoruz using AForge.Video.DirectShow; //Referansları ekliyoruz namespace webcam_foto { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private FilterInfoCollection webcam;//webcam isminde tanımladığımız değişken bilgisayara kaç kamera bağlıysa onları tutan bir dizi. private VideoCaptureDevice cam;//cam ise bizim kullanacağımız aygıt. private void Form1_Load(object sender, EventArgs e) { webcam = new FilterInfoCollection(FilterCategory.VideoInputDevice);//webcam dizisine mevcut kameraları dolduruyoruz. foreach (FilterInfo videocapturedevice in webcam) { comboBox1.Items.Add(videocapturedevice.Name);//kameraları combobox a dolduruyoruz. } comboBox1.SelectedIndex = 0; //Comboboxtaki ilk index numaralı kameranın ekranda görünmesi için } private void button1_Click(object sender, EventArgs e) { cam = new VideoCaptureDevice(webcam[comboBox1.SelectedIndex].MonikerString); cam.NewFrame += new NewFrameEventHandler(cam_NewFrame); cam.Start(); } private void cam_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap bit = (Bitmap)eventArgs.Frame.Clone(); pictureBox1.Image = bit; } private void button2_Click(object sender, EventArgs e) { if (cam.IsRunning) //kamera açıksa kapatıyoruz. { cam.Stop(); } } private void button3_Click(object sender, EventArgs e) { pictureBox2.Image = pictureBox1.Image; } //www.yazilimkodlama.com private void button4_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { pictureBox1.Image.Save(saveFileDialog1.FileName);//Picturebox'taki görüntüyü kaydediyoruz. } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { //For kapatılırken kamera açıksa kapatıyoruz. if (cam.IsRunning) { cam.Stop(); } } } } |
Kodlarımızı yazdıktan sonra programımızı çalıştıralım.
İşlem tamam. Kolay gelsin.
webcam kayıt yapsın onu yapmak mumkunmu
cs proj dosyalarını atarmısınız tüm dosyalarıyla çok mutlu olurumm
private FilterInfoCollection webcam;//webcam isminde tanımladığımız değişken bilgisayara kaç kamera bağlıysa onları tutan bir dizi.
private VideoCaptureDevice cam;
bunu tanımıyor bi yardım açil
MERHABA BEN SADECE BİR KAMERA YANİ BELLİ BİR KAMERA İLE ÇEKMEK İSTİYORUM VE BUNU BANA SORMADAN SEÇSİN İSTİYORUM NASIL YAPA BİLİRİM
formun load kısmına
if (comboBox1.Text== “kamera adı”)
{
button1.PerformClick();
}
bu kodu yaz kamera adı yerine comboBox1 deki adı yaz
Kamerayı aç butonuna bastığım zaman kamera açılmıyor fakat combobox da easy camera adında bir kamera görünüyor ne yapmalıyım.
Kaydet kodları yani çektiğimiz fotoğrafı nasıl kaydederiz çalışıyor kamera görüntüde alıyorum ama kaydedemiyorum kaydet kodları lazım
Paylaşım için teşekkürler. Görüntü normal çözünürlükte kaydetmesine ragmen RunTime’da picturceboxda görüntü zoomlu bir şekilde ve anlaşılmayacak kadar karmaşık mozaik şeklinde. Sebebi ne olabilir?
Picturebox özelliklerinden SizeMode özelliğini değiştirerek ayarlayabilirsiniz.
Hocam sadece bu kısımı anlamadım burası neyin kodu yani neye tıklayarak yazıyoruz tek sorunum bu teşekkürler..
private void cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap bit = (Bitmap)eventArgs.Frame.Clone();
pictureBox1.Image = bit;
}
Button1_Click te
cam.NewFrame += new NewFrameEventHandler(cam_NewFrame);
satırını yazdığında oluşacak o bölüm.
Çok teşekkürler sonradan anladım 🙂
biladerim teşekkürler program çalıştı.