C# ile Web Cameradan Görüntü Almak

C# ile Web Cameradan Görüntü Almak

İnternette birçok C# ile görüntü alma uygulaması mevcut fakat bunlardan hiçbirisi neredeyse düzgün çalışmamakta. Bende sizlere bunu paylaşmak istedim.

İnternette bu başlığı yazdığınızda birçok web sitesi karşınıza çıkacaktır, fakat maalesef çok net ve kesin bir anlatımla karşılaşmak mümkün olmuyor. Ben de kendi geliştirdiğim bir projenin prototipini yapmak için bu programı yazıp küçük sistemlerde nasıl yaparız ve geliştiririz, onu görmek istedim ve buna ihtiyaç duydum. Bundan yola çıkarak da detaylarını sizlerle paylaşmak istedim.



 



Öncelikle resimdeki gibi bir form hazırlayınız. Formun adını Kameradan_Görüntü_Alma koyunuz. 1 Picturebox, 3 button, 1 Combobox ekleyin. Butonların Başlat olanının texti Başlat Name i button1 ; Durdur olanının texti button2 Name i Durdur ; Resim Çekin texti Resim Çek Name i Cek olacak. Picture Box ın Name i pcbVideo olacaktır.






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;


namespace Kameradan_Görüntü_Alma
{
public partial class Form1 : Form
{
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.

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
webcam = new
FilterInfoCollection(FilterCategory.VideoInputDevice); //webcam dizisine mevcut kameraları dolduruyoruz.
foreach (FilterInfo item in webcam)
{
comboBox1.Items.Add(item.Name); //kameraları combobox a dolduruyoruz.
}
comboBox1.SelectedIndex = 0;

}

private void button1_Click(object sender, EventArgs e)
{
cam = new
VideoCaptureDevice(webcam[comboBox1.SelectedIndex].MonikerString); //başlaya basıldığıdnda yukarda tanımladığımız cam değişkenine comboboxta seçilmş olan kamerayı atıyoruz.
cam.NewFrame += new NewFrameEventHandler(cam_NewFrame);
cam.Start(); //kamerayı başlatıyoruz.

}

void cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap bmp = (Bitmap)eventArgs.Frame.Clone(); //kısaca bu eventta kameradan alınan görüntüyü picturebox a atıyoruz.
pcbVideo.Image = bmp;
}

private void button2_Click(object sender, EventArgs e)
{
if(cam.IsRunning)
{
cam.Stop(); // kamerayı durduruyoruz.
}
}

private void Cek_Click(object sender, EventArgs e)
{
SaveFileDialog swf = new SaveFileDialog();
swf.Filter = "(*.jpg)|*.jpg|Bitma*p(*.bmp)|*.bmp";
DialogResult dialog = swf.ShowDialog(); //resmi çekiyoruz ve aşağıda da kaydediyoruz.

if (dialog == DialogResult.OK)
{
pcbVideo.Image.Save(swf.FileName);
}

}
}
}


Kullanacak arkadaşlara yardımcı olacağını umarım kodları formu oluşturduktan sonra direk yapıştırsanız da olur. İyi çalışmalar.


Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Merhaba hocam webcam capture ile buna benzer bir şey yapmıştım .Kendi bilgisayarımdaki kamera görüntüsünü diğer bilgisayarla paylaşmak istiyorum C# üzerinden mümkün mü acaba teşekkürler.
Kendim yazmadım projemde Matlab ile çalışmadan önce C#da yapılabiliritesini ölçmek için yazmaya başlamıştım ileri gitmedim. Fakat linkte http://www.camera-sdk.com/p_18-ip-video-camera-viewer-in-c-onvif.html istediğiniz tarzda bir uygulama yapılıyor. Paylaşmak istiyorsanız bilgisayarınızın ipsine bağlanan ve ipden donanım kontrolü yapan bir program yazabilirsiniz neden olmasın.

Yukarı Git