C# WebCam Kullanarak Fotoğraf Çekme

Rooster

only business
Legend Member
Katılım
10 Ağu 2019
Konular
727
Mesajlar
3,205
Çözümler
314
Tepkime puanı
4,994
Konum
Milano
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.
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.
webcam_foto_2
İndirme işlemi tamamlandıktan sonra dosyaları zip içerinden çıkarıyoruz.
Şimdi projemizde sağ tıklayarak Add Reference diyoruz.
webcam_foto_3
Burada karşımıza gelen pencerede;
webcam_foto_4
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
Kod:
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;
        } //realitycheats.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();
            }
        }
    }
}
ölümden de görebilirsiniz.
 
Üst