İlginizi Çekebilir
C# XML Dosya Oluşturma
  1. Ana Sayfa
  2. C Sharp

C# Web Cam İle Fotoğraf Çekme Uygulaması

C# Web Cam İle Fotoğraf Çekme Uygulaması
+ - 0

C# Web Cam İle Fotoğraf Çekme Uygulaması, yazım ile C# eğitim setime deva ediyorum. Bu dersimiz tek başına bir uygulama olacak. Bu sebeple Github projeme eklemeyeceğim. Elbette bu projem github yüklenecek.

C# Web Cam İle Fotoğraf Çekme Uygulaması

Bu uygulamanın bir benzerini daha önceleri görmüştüm. Sonrasında bende bir uygulama yapayım belki ileride lazım olur düşüncesi ile hazırladım.

Öncelikle bu uygulama için ek bir dll gerekiyor. Buradaki linkten Dll ‘i indirebilirsiniz.

Formumuza bir from ekledikten sonra DLL projemize import ediyoruz. Formumuzu ekledikten sonra WebCam ve Helper Adına iki class daha ekliyoruz.

Formumuzu açıp tasarımını yapalım. Bir TabControl, iki PictureBox ve altın Button ekliyoruz.

Form tasarımı üzerinden projemizi tanıtayım.

C# Web Cam İle Fotoğraf Çekme 1

Başla butonuna tıkladığımızda bilgisayarımızdaki kameralardan hangisi seçmek istediğimizi soruyor.

C# Web Cam İle Fotoğraf Çekme 3

Buradan bir kamera seçtikten sonra bu ekran kapanıyor ve arkadaki Picture Box’a kamera görüntüsü yansıyor.

Durdur butonuna tıkladığımızda kameradan görüntü almayı durduruyor. Video’ya pause yapmışız gibi yani.

Devam Et butonuna tıkladığımızda videoya start demiş oluyoruz.

Resim Çek butonuna tıkladığımızda resim çekiliyor ve Resmi Dışa Aktar tabına geçiş yapıyor. (Aşağıdaki ekran)

C# Web Cam İle Fotoğraf Çekme 2

Resmi Kaydet butonuna tıkladığımızda ise resmi nereye kaydetmek istediğimizi soruyor ve kaydediyor.

Tekrar Dene butonuna tıkladığımızda Resim Çek tabına geçiş yapıyor ve işlemi tekrar edebiliyoruz.

Formumuzun kodlarını verelim.

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 WebCam_Capture;

namespace WebCameraCapture
{
    public partial class AnaMenu : Form
    {
        WebCam webcam;


        public AnaMenu() { InitializeComponent(); }


        private void AnaMenu_Load(object sender, EventArgs e)
        {
            webcam = new WebCam();
            webcam.InitializeWebCam(ref img_Web_Cam);
        }
        private void btn_Baslat_Click(object sender, EventArgs e)
        {
            webcam.Start();
        }
        private void btn_Durdur_Click(object sender, EventArgs e)
        {
            webcam.Stop();
        }
        private void btn_Devam_Et_Click(object sender, EventArgs e)
        {
            webcam.Continue();
        }
        private void btn_Resim_Cek_Click(object sender, EventArgs e)
        {
            img_Alinan_Resim.Image = img_Web_Cam.Image;
            tabControl1.SelectedIndex = 1;
        }
        private void btn_Resmi_Kaydet_Click(object sender, EventArgs e)
        {
            Helper.SaveImageCapture(img_Alinan_Resim.Image);
        }
        private void btn_Tekrar_Dene_Click(object sender, EventArgs e)
        {
            webcam.Start();
            tabControl1.SelectedIndex = 0;
        }
    }
}

WebCam Class’ımızın kodlarını verelim.

using System;
using System.IO;
using System.Linq;
using System.Text;
using WebCam_Capture;
using System.Collections.Generic;

namespace WebCameraCapture
{
    class WebCam
    {
        private WebCamCapture webcam;
        private System.Windows.Forms.PictureBox _FrameResim;
        private int FrameNo = 30;

        public void InitializeWebCam(ref System.Windows.Forms.PictureBox imgBox)
        {
            webcam = new WebCamCapture();
            webcam.FrameNumber = ((ulong)(0ul));
            webcam.TimeToCapture_milliseconds = FrameNo;
            webcam.ImageCaptured += new WebCamCapture.WebCamEventHandler(webcam_ResimCek);
            _FrameResim = imgBox;
        }
        void webcam_ResimCek(object source, WebcamEventArgs e)
        {
            _FrameResim.Image = e.WebCamImage;
        }
        public void Start()
        {
            webcam.TimeToCapture_milliseconds = FrameNo;
            webcam.Start(0);
        }
        public void Stop()
        {
            webcam.Stop();
        }
        public void Continue()
        {
            webcam.TimeToCapture_milliseconds = FrameNo;
            webcam.Start(this.webcam.FrameNumber);
        }
    }
}

Şimdi de Helper Class’ımızın kodlarını verelim.

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace WebCameraCapture
{
    class Helper
    {
        public static void SaveImageCapture(System.Drawing.Image image)
        {
            SaveFileDialog s = new SaveFileDialog();
            s.FileName = "Resim_" + DateTime.Now.ToString("dd.MM.yyyy");
            s.DefaultExt = ".jpg";
            s.Filter = "Image (.jpg)|*.jpg";

            if (s.ShowDialog() == DialogResult.OK)
            {
                string DosyaAdi = s.FileName;
                FileStream fstream = new FileStream(DosyaAdi, FileMode.Create);
                image.Save(fstream, System.Drawing.Imaging.ImageFormat.Jpeg);
                fstream.Close();
            }
        }
    }
}

Projemizdeki tüm kodlar bu kadar arkadaşlar.

Buradaki Linkten projenin kodlarına ulaşabilirsiniz.

Proje dosyaları arasında DLL mevcuttur. Yani biliyorsunuz, normalde DLL ler bin/debug içinde kalıyor. Projeyi Github’a yüklediğimizde ise bin/debug klasörü yüklenmiyor.


C# Web Cam İle Fotoğraf Çekme Uygulaması, dersimizde bu kadar arkadaşlar. Diğer derslerimizde görüşmek üzere.

C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.

Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…

Sağlıcakla ve takipte kalın. ;)

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)