Simple Face Detection using OpenCV | Visual Studio

Hmm... Bingung mau nulis kata pengantarnya (:p). Langsung aja kali ya?? Hehe, kali ini saya mau sharing kodingan Simple Face Detection using OpenCV | Visual Studio. Nah lhoo apa itu OpenCV? Biar lebih jelasnya mengenai apa itu OpenCV kalian tinggal baca aja postingan saya sebelumnya tentang apa itu OpenCV disini. Nahh kalau mengenai projek yang bakalan kita bikin adalah sebuah projek sederhana untuk mendeteksi wajah dari foto yang sudah kita tentukan. Kenapa menggunakan OpenCV? Jawabannya simple, karena lebih mudah dan Open Source!! haha

Oke langsung saja ke tahapan membuat projeknya :
1. Bagi kamu yang belum install OpenCV kamu ikutin langkah-langkah pada postingan saya sebelumnya dan saya sarankan menggunakan OpenCV 2.1.0 karena saya menggunakan yang 2.1.0. Postingannya install OpenCV-nya disini. Untuk nama projeknya terserah kalian, tapi kalau saya namanya FaceDetection.

2. Setelah selesai meng-install dan setting Project Directories kamu tinggal copy-paste kodingan di bawah :

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"

//fungsi deteksi wajah
void detect_and_draw(IplImage* img){
//inisialisasi
CvHaarClassifierCascade *cascade=0;
CvMemStorage *storage=0;

IplImage* gray=img;

//baca file xml u/ image detection
if(!cascade){
char * file="C:/OpenCV2.1/data/haarcascades/haarcascade_frontalface_alt.xml";
cascade=(CvHaarClassifierCascade*) cvLoad(file, 0, 0, 0);
storage=cvCreateMemStorage(0);
}

//deteksi wajah
CvSeq* faces=cvHaarDetectObjects(
gray, 
cascade,
storage,
1.1,
3,
CV_HAAR_DO_CANNY_PRUNING,
cvSize(10, 10));

int i;

//menggambar kotak merah pd bagian wajah yg ditemukan
for(i=0; i<(faces ? faces->total : 0) ; i++){
CvRect* r=(CvRect*) cvGetSeqElem(faces, i);
cvRectangle(img,
cvPoint(r->x, r->y),
cvPoint(r->x + r->width, r->y + r->height),
CV_RGB(255, 0, 0),
1, 8, 0
);
}

//menampilkan gambar hasil deteksi
cvNamedWindow("hasil");
cvShowImage("hasil", img);

cvWaitKey(0);
}

int main(array<System::String ^> ^args){
//load image asli
const char* filename="dank.jpg";
IplImage* img=cvLoadImage(filename);

//panggil fungsi
detect_and_draw(img);
}


3. Untuk yang berwarna merah sesuaikan dengan nama file foto yang sudah kalian masukkan di dalam projeknya. Kalau saya file fotonya ada di C:\Users\Ozi Priawadi\Documents\Visual Studio 2012\Projects\FaceDetection\FaceDetection\dank.jpg. Kalau yang berwarna biru sesuaikan dengan folder instalan OpenCV yang sudah kamu buat. 

4. Setelah selesai coba klik RUN projeknya dan hasilnya kira-kira seperti ini