Pendeteksian Wajah Menggunakan Emgu CV

Posted: February 21, 2013 by Andzar Muhammad Fauzi in Uncategorized

Kali ini saya akan menunjukkan cara untuk melakukan Face Detection menggunakan kamera / Webcam. Kita akan melihat bagaimana sebuah aplikasi dapat mendeteksi wajah dari foto yang diambil. Yang dibutuhkan adalah Microsoft Visual Studio 2012 atau dapat pula digunakan pada versi 2008 dan Emgu CV (OpenCV dalam .Net).

Hal pertama yang harus dilakukan adalah menginstal Emgu CV.

Selanjutnya buka Microsoft Visual studio 2012 dan buat poyek WPF baru. Tambahkan beberapa referensi seperti gambar dibawah ini :

12

Buka FaceDetection.cs dan masukkan library ini di paling atas

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 System.Diagnostics;
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;

Inisialiasi variabel berikut

//deklarasi variabel global
private Capture capture; //mengambil gambar dari kamera sebagai image frames
private bool captureInProgress;
Image<Bgr, Byte> ImageFrame;
HaarCascade face;

Kemudian buat method Run() untuk menjalankan proses face detection dengan Haar Cascade

public void Run()
{

Image<Gray, Byte> gray = ImageFrame.Convert<Gray, Byte>();

gray._EqualizeHist();

face = new HaarCascade(Application.StartupPath + "/haarcascade_frontalface_default.xml");

MCvAvgComp[][] facesDetected = gray.DetectHaarCascade(
face,
1.2,
10,
Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
new Size(100, 100));

foreach (MCvAvgComp f in facesDetected[0])
{ImageFrame.Draw(f.rect, new Bgr(Color.Red), 2);}}

Setelah itu buat method ProcessFrame() untuk melakukan proses dari Run() pada ImageBox Emgu CV

private void ProcessFrame(object sender, EventArgs e)
{
//ProsesFrame() di bawah ini adalah fungsi yang kita ditentukan untuk
//membuat gambar pada EmguCv yang disebut ImageFrame. menangkap frame dari kamera
//dan mengalokasikan ke ImageFrame. kemudian menampilkan gambar ini di EmguCV imageBox
ImageFrame = capture.QueryFrame().Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
Run();
imageBox1.Image = ImageFrame;
}

Ini bagian akhir dari program ini. Pada FaceDetection(), terapkan method yang telah dibuat

public FaceDetection()

{
InitializeComponent();
#region if capture is not created, create it now
if (capture == null)
{
try
{
capture = new Capture();
}
catch (NullReferenceException excpt)
{
MessageBox.Show(excpt.Message);
}
}
#endregion

if (capture != null)
{
if (captureInProgress)
{
Application.Idle -= ProcessFrame;
}
else
{
Application.Idle += ProcessFrame;
}
captureInProgress = !captureInProgress;
}
}

Ini adalah hasil yang saya kerjakan
6

Comments
  1. Radit says:

    untuk librarynya apa saja yg dibutuhkan? dan bagaimana caranya? mohon penjelasannya

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s