İlk Olarak Burayı Okumalısınız
Konuya geçecek olursak, ilk önce birkaç kütüphane dosyasına ihtiyacınız olacak. örnek projede kütüphaneler mevcut bunlar kendinizi daha da ileri götürmek için. aforge kütüphanesini indirmek isteyebilirsiniz.
Ekran görüntüsü.
Ben aslına bakarsanız kod anlatma konusunda pek iyi değilim. Örnek projeyi indirin. Kodları silin aralarına bir şeyler eklemeye çalışın ve öğrenin. Şimdi yeni bir soru ile daha karşılaşıyoruz. Aynı anda birkaç görüntü almak istersek ne yapmalıyız. Aslında onunda cevabı basit ama biraz da sizin araştırma yapıp kendi blogunuzda yayınlamanız için onu size bırakıyorum. Yayınlamış olduğunuz yazıyı yorumlardan paylaşırsanız çok mutlu olurum.
Sağlıcakla kalın :)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//Güzel Aforge
//////////////
using AForge;
using AForge.Imaging.Filters;
using AForge.Imaging;
using AForge.Video;
using AForge.Video.DirectShow;
using AForge.Vision;
using AForge.Vision.Motion;
namespace GoruntuIsleme2
{
public partial class Form1 : Form
{
private VideoCaptureDevice kameraAygit;
private FilterInfoCollection webcamAygit;
public Form1()
{
InitializeComponent();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (kameraAygit != null && kameraAygit.IsRunning)
{
kameraAygit.SignalToStop();
kameraAygit = null;
}
}
private void Form1_Load(object sender, EventArgs e)
{
webcamAygit = new FilterInfoCollection(FilterCategory.VideoInputDevice);
foreach (FilterInfo VideoCaptureDevice in webcamAygit)
{
comboBox1.Items.Add(VideoCaptureDevice.Name); // WebCamleri listele
comboBox1.SelectedIndex = 0;
}
kameraAygit = new VideoCaptureDevice(webcamAygit[comboBox1.SelectedIndex].MonikerString);//webcam listesinden kafadan birinciyi al diyoruz.
kameraAygit.NewFrame += new NewFrameEventHandler(cam_goruntu_new_frame);
kameraAygit.DesiredFrameRate = 30;//saniyede kaç görüntü alsın istiyorsanız. FPS
kameraAygit.DesiredFrameSize = new Size(320, 240);//görüntü boyutları
kameraAygit.Start();
}
void cam_goruntu_new_frame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap image = (Bitmap)eventArgs.Frame.Clone();
Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();
pictureBox1.Image = image;
ColorFiltering filter = new ColorFiltering();
filter.Red = new IntRange(150, 255);
filter.Green = new IntRange(0, 75);
filter.Blue = new IntRange(0, 75);
filter.ApplyInPlace(image1);
nesnebul(image1);
}
public void nesnebul(Bitmap image)
{
BlobCounter blobCounter = new BlobCounter();
blobCounter.MinWidth = 2;
blobCounter.MinHeight = 2;
blobCounter.FilterBlobs = true;
blobCounter.ObjectsOrder = ObjectsOrder.Size;
Grayscale griFiltre = new Grayscale(0.2125, 0.7154, 0.0721);
Bitmap griImage = griFiltre.Apply(image);
blobCounter.ProcessImage(griImage);
Rectangle[] rects = blobCounter.GetObjectsRectangles();
pictureBox2.Image = griImage;
foreach (Rectangle recs in rects)
{
if (rects.Length > 0)
{
Rectangle objectRect = rects[0];
//Graphics g = Graphics.FromImage(image);
Graphics g = pictureBox1.CreateGraphics();
using (Pen pen = new Pen(Color.FromArgb(252, 3, 26), 2))
{
g.DrawRectangle(pen, objectRect);
}
//Cizdirilen Dikdörtgenin Koordinatlari aliniyor.
int objectX = objectRect.X + (objectRect.Width / 2);
int objectY = objectRect.Y + (objectRect.Height / 2);
g.DrawString(objectX.ToString() + "X" + objectY.ToString(), new Font("Arial", 12), Brushes.Red, new System.Drawing.Point(250, 1));
g.Dispose();
}
}
}
}
Yorumlar
Mailim: fatsu_me@mynet.com
hocam arkadaş profilinde vermiş mail adresini, sağolsun sorulan sorulara cevap vermeye çalışıyor.
bu abi yapmış mesala http://www.youtube.com/watch?v=Wi53kbLRBwg
google da "aforge hand tracking" diye aratırsan mutlaka işe yarar bir şeyler bulacağına inanıyorum. Çalışmanda başarılar dilerim.
http://i.hizliresim.com/nPQgMR.png
adresten resim kırpma işlemlerine bakabilirsin...
Yararlı yazınız için teşekkür ederim. Hotfile'a yüklemiş olduğunuz dosyalar silinmiş. Rica etsem tekrar yükleyebilir misiniz?
Saygılar.
Ben kendi yaptığım çalışmayı ekledim. saygılar
saygılarımal
filter.Green = new IntRange(0, 75);
filter.Blue = new IntRange(0, 75);
değerleri ile oynayarak renk kodlarını oluşturabilirsin.
halflifeatp@gmail.com
ülkemizde ne yazıkki paylaşımcı insanlar çok az:( benim bi projem içn kodlarınızı kullandım lakin filitre değerlerini değiştirmek istiyorum bu değerleri nasıl belirlemeliyim şimdiden teşekkürler.