Dosya Linki: Tıkla
Github Linki: Tıkla
🚀 Bilgisayarıma "Yüzümü Tanıma" Yeteneği Kazandırdım!
Merhaba arkadaşlar! Bugün size kendi yazdığım kodlarla, kameradaki insan yüzünü anında tespit edip fotoğrafını çeken, üstüne bir de uyarı sesi çıkaran akıllı bir güvenlik sistemi yaptım. Kulağa bilim kurgu filmi gibi geliyor değil mi? Aslında bunu C# dili ve biraz yapay zeka yardımıyla yapmak, sanıldığından çok daha eğlenceli ve kolay!
🤖 Bu Sistem Nasıl Çalışıyor?
Sistemimiz, tıpkı bir dedektif gibi çalışıyor ve üç ana aşamadan oluşuyor:
Gözlem: Bilgisayar kamerası dünyayı sürekli olarak piksellerden oluşan bir video gibi izliyor.
Yüz Tespiti (Beyin): Bilgisayar, içindeki "Haar Cascade" adını verdiğimiz özel bir algoritma sayesinde gördüğü şekillerin bir "yüz" olup olmadığını analiz ediyor. Göz, burun ve ağız arasındaki mesafeleri hesaplayarak insan yüzünü anında ayırıyor.
Eylem: Eğer bir yüz bulursa;
Ekranda "Tespit Edildi" yazıyor.
Eğlenceli bir uyarı sesi çalıyor.
Yüzün fotoğrafını otomatik olarak bilgisayara kaydediyor!
🛠 Neye İhtiyacımız Var?
Bu projeyi yapmak için bir "dijital mutfak" kurduk:
Visual Studio: Kodlarımızı yazdığımız ana merkezimiz.
EmguCV: Bilgisayarın gözlerini açmasını sağlayan bir kütüphane.
C# Dili: Bilgisayara ne yapması gerektiğini anlattığımız dil.
XML Dosyası: Bilgisayarın "yüz nedir?" sorusunun cevabını içinde barındıran akıllı bir harita.
📝 Kodların Sırrı: "Zamanlayıcı"
Kodlarımızda bir "Zamanlayıcı" (Timer) kullanıyoruz. Bu zamanlayıcı her 30 milisaniyede bir kameraya bakıp şunu soruyor: "Orada bir yüz var mı?"
Cevap EVET ise: Sistem yeşil renge bürünür, ses çalar ve anlık fotoğraf çeker.
Cevap HAYIR ise: Sistem "Yüz aranıyor..." modunda bekler.
💡 Öğrenciler İçin Küçük Bir Not:
Yapay zeka dediğimiz şey aslında bilgisayarın çok hızlı işlem yapmasıdır. Bizim gözümüzle saniyeler süren işlemleri, bilgisayar saniyenin çok küçük bir diliminde binlerce kez tekrar eder. Kod yazmak aslında sadece bir komut dizisi değil, bilgisayara dünyayı nasıl göreceğini öğretmektir.
Kendi Sisteminizi Kurun!
Benim yazdığım kodun mantığı, kamera görüntüsünü sürekli taramak üzerine kurulu. Siz de benzer bir kurulum yapıp, "Yüz tespiti yapan akıllı bir güvenlik sistemi" oluşturabilirsiniz. Belki odanıza girenleri size haber veren bir alarm sistemine dönüştürebilirsiniz!
Sizce bu teknoloji başka hangi alanlarda kullanılabilir? Fikirlerinizi yorumlarda buluşalım!
Ana Kodlar:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Media;
using Emgu.CV;
namespace yuztanima_v2
{
public partial class Form1 : Form
{
private VideoCapture? _capture;
private CascadeClassifier _faceDetector = new CascadeClassifier("haarcascade_frontalface_default.xml");
private SoundPlayer _sesCalici = new SoundPlayer("seskisa.wav");
private bool _sesCaldi = false;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
_capture = new VideoCapture(0);
timer1.Start();
}
catch (Exception ex)
{
MessageBox.Show("Kamera hatası: " + ex.Message);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
if (_capture != null && _capture.IsOpened)
{
Mat frame = new Mat();
_capture.Read(frame);
if (!frame.IsEmpty)
{
using (Mat grayFrame = new Mat())
{
CvInvoke.CvtColor(frame, grayFrame, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
var faces = _faceDetector.DetectMultiScale(grayFrame, 1.1, 10);
if (faces.Length > 0)
{
lblDurum.Text = "Tespit Edildi";
lblDurum.ForeColor = Color.Green;
// Ses bir kez çalsın
if (!_sesCaldi)
{
_sesCalici.Play();
_sesCaldi = true;
}
}
else
{
lblDurum.Text = "Yüz Aranıyor...";
lblDurum.ForeColor = Color.Red;
_sesCaldi = false; // Yüz gidince ses tekrar çalınabilir hale gelir
}
foreach (var face in faces)
{
CvInvoke.Rectangle(frame, face, new Emgu.CV.Structure.MCvScalar(0, 255, 0), 2);
}
}
pbKamera.Image = frame.ToBitmap();
}
}
}
private void btnKaydet_Click(object sender, EventArgs e)
{
if (_capture != null && _capture.IsOpened)
{
Mat frame = new Mat();
_capture.Read(frame);
// Yüz tespiti yap
using (Mat gray = new Mat())
{
CvInvoke.CvtColor(frame, gray, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
var faces = _faceDetector.DetectMultiScale(gray, 1.1, 10);
if (faces.Length > 0)
{
string klasor = "KayitliYuzler";
if (!Directory.Exists(klasor)) Directory.CreateDirectory(klasor);
string dosyaAdi = Path.Combine(klasor, $"yuz_{DateTime.Now:yyyyMMdd_HHmmss}.jpg");
Mat yuzResmi = new Mat(frame, faces[0]);
yuzResmi.Save(dosyaAdi);
MessageBox.Show("Yüz kaydedildi: " + dosyaAdi);
}
else
{
MessageBox.Show("Kayıt edilecek yüz bulunamadı!");
}
}
}
}
}
}








