Judul : FACE & EYE DETECTION (ALGORITMA LBP) MENGGUNAKAN OPENCV 2.4.10
Tema : FACE & EYE DETECTION (ALGORITMA LBP) MENGGUNAKAN OPENCV 2.4.10
FACE & EYE DETECTION (ALGORITMA LBP) MENGGUNAKAN OPENCV 2.4.10
Selamat sore gan, kali ini ane akan share tentang program Face & Eye Detection menggunakan OpenCV 2.4.10. Yup2 sesuai janji ane sebelumnya ane kali ini kita akan main2 menggunakan object video atau lebih tepatnya kamera webcam. Ok jadi sebelum kita bermain dengan program Face & Eye Detection, terlebih dahulu kita cek dulu apakah kamera webcam kita dapat diakses atau tidak oleh OpenCV. Ok langsung aja kita menuju TKP.
Pertama2 jalankan program untuk mengaktifkan atau mengecek kamera webcam di bawah ini.
Pertama2 jalankan program untuk mengaktifkan atau mengecek kamera webcam di bawah ini.
Mengaktifkan Webcam
Coding:
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
void detectAndDisplay( Mat frame );
string window_name = "Capture - Webcam - Zainal";
int main( int argc, const char** argv )
{
CvCapture* capture;
Mat frame;
capture = cvCaptureFromCAM( -1 ); // 0 for external camera
if( capture )
{
while( true )
{
frame = cvQueryFrame( capture );
if( !frame.empty() )
{
imshow( window_name, frame );
}
else { printf(" --(!) No captured frame -- Break!"); break; }
int c = waitKey(10);
if( (char)c == 'c' ) { break; }
}
}
return 0;
}
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
void detectAndDisplay( Mat frame );
string window_name = "Capture - Webcam - Zainal";
int main( int argc, const char** argv )
{
CvCapture* capture;
Mat frame;
capture = cvCaptureFromCAM( -1 ); // 0 for external camera
if( capture )
{
while( true )
{
frame = cvQueryFrame( capture );
if( !frame.empty() )
{
imshow( window_name, frame );
}
else { printf(" --(!) No captured frame -- Break!"); break; }
int c = waitKey(10);
if( (char)c == 'c' ) { break; }
}
}
return 0;
}
Outputan:
Ketika program di RUN seharusnya kamera webcam pada laptop kita akan aktif dan mengambil gambar objek didepannya, apabila kita ingin menggunakan kamera webcam external kita hanya perlu merubah codingannya menjadi capture = cvCaptureFromCAM(0); maka kamera webcam external akan aktif, untuk menghentikan program klik karakter "c" pada keyboard.
Ok setelah dipastikan kamera kita siap, kita akan lanjut ke program Face & Eye Detection, sebelumnya pastikan kita telah mengcopy dua file .xml kedalam folder project kita. dua file .xml tersebut adalah file untuk mendeteksi wajah dan mata, file tersebut didapat dari directory (C:\opencv\opencv\sources\data\haarcascades)
Setelah file .xml dicopy kan ke folder project, saatnya menulis program di bawah ini,
Face & Eye Detection
Coding:
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
//Function Headers
void detectAndDisplay( Mat frame );
//Global variables
String face_cascade_name = "haarcascade_frontalface_alt.xml";
String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier face_cascade;
CascadeClassifier eyes_cascade;
string window_name = "Capture - Face detection - Zainal";
RNG rng(12345);
//@function main
int main( int argc, const char** argv )
{
CvCapture* capture;
Mat frame;
//-- 1. Load the cascades
if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
if( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
//-- 2. Read the video stream
capture = cvCaptureFromCAM( -1 ); // 0 for external camera
if( capture )
{
while( true )
{
frame = cvQueryFrame( capture );
//-- 3. Apply the classifier to the frame
if( !frame.empty() ) { detectAndDisplay( frame ); }
else { printf(" --(!) No captured frame -- Break!"); break; }
int c = waitKey(10);
if( (char)c == 'c' ) { break; }
}
}
return 0;
}
//@function detectAndDisplay
void detectAndDisplay( Mat frame )
{
std::vector<Rect> faces;
Mat frame_gray;
cvtColor( frame, frame_gray, CV_BGR2GRAY );
equalizeHist( frame_gray, frame_gray );
//-- Detect faces
face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );
for( size_t i = 0; i < faces.size(); i++ )
{
Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 );
cout << "Point center" << center << endl;
ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
Mat faceROI = frame_gray( faces[i] );
std::vector<Rect> eyes;
//-- In each face, detect eyes
eyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 |CV_HAAR_SCALE_IMAGE, Size(30, 30) );
for( size_t j = 0; j < eyes.size(); j++ )
{
Point center( faces[i].x + eyes[j].x + eyes[j].width*0.5, faces[i].y + eyes[j].y + eyes[j].height*0.5 );
int radius = cvRound( (eyes[j].width + eyes[j].height)*0.25 );
circle( frame, center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 );
}
}
//-- Show what you got
imshow( window_name, frame );
}
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
//Function Headers
void detectAndDisplay( Mat frame );
//Global variables
String face_cascade_name = "haarcascade_frontalface_alt.xml";
String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier face_cascade;
CascadeClassifier eyes_cascade;
string window_name = "Capture - Face detection - Zainal";
RNG rng(12345);
//@function main
int main( int argc, const char** argv )
{
CvCapture* capture;
Mat frame;
//-- 1. Load the cascades
if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
if( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };
//-- 2. Read the video stream
capture = cvCaptureFromCAM( -1 ); // 0 for external camera
if( capture )
{
while( true )
{
frame = cvQueryFrame( capture );
//-- 3. Apply the classifier to the frame
if( !frame.empty() ) { detectAndDisplay( frame ); }
else { printf(" --(!) No captured frame -- Break!"); break; }
int c = waitKey(10);
if( (char)c == 'c' ) { break; }
}
}
return 0;
}
//@function detectAndDisplay
void detectAndDisplay( Mat frame )
{
std::vector<Rect> faces;
Mat frame_gray;
cvtColor( frame, frame_gray, CV_BGR2GRAY );
equalizeHist( frame_gray, frame_gray );
//-- Detect faces
face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );
for( size_t i = 0; i < faces.size(); i++ )
{
Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 );
cout << "Point center" << center << endl;
ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
Mat faceROI = frame_gray( faces[i] );
std::vector<Rect> eyes;
//-- In each face, detect eyes
eyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 |CV_HAAR_SCALE_IMAGE, Size(30, 30) );
for( size_t j = 0; j < eyes.size(); j++ )
{
Point center( faces[i].x + eyes[j].x + eyes[j].width*0.5, faces[i].y + eyes[j].y + eyes[j].height*0.5 );
int radius = cvRound( (eyes[j].width + eyes[j].height)*0.25 );
circle( frame, center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 );
}
}
//-- Show what you got
imshow( window_name, frame );
}
Outputan:
Setelah program di RUN seharusnya program akan mendeteksi wajah dan mata yang tertangkap oleh camera webcam seperti pada gambar di atas. Pada program diatas juga ane modifikasi agar center dari lingkaran pendeteksi wajah ditampilkan dalam bentuk alamat X dan Y, data inilah yang nantinya dapat dikembangkan untuk membuat gimbal kamera yang dapat mengikuti objek yang dinginkan.
Gimana seru kan... Sebenernya masih banyak lagi contoh program dan metode2 Object Detection dari OpenCV di file example nya... Ok selamat belajar dan mencoba, semoga tutorial singkat ini dapat memotivasi temen2 semua untuk mengexplor lebih jauh lagi tentang OpenCV.. Ok salam semangat kawan..
Gimana seru kan... Sebenernya masih banyak lagi contoh program dan metode2 Object Detection dari OpenCV di file example nya... Ok selamat belajar dan mencoba, semoga tutorial singkat ini dapat memotivasi temen2 semua untuk mengexplor lebih jauh lagi tentang OpenCV.. Ok salam semangat kawan..
Demikianlah Artikel FACE & EYE DETECTION (ALGORITMA LBP) MENGGUNAKAN OPENCV 2.4.10
materi teknik elektro tentang FACE & EYE DETECTION (ALGORITMA LBP) MENGGUNAKAN OPENCV 2.4.10, mudah-mudahan bisa memberi manfaat untuk anda semua. baiklah, sekian postingan kali ini.
0 Response to "FACE & EYE DETECTION (ALGORITMA LBP) MENGGUNAKAN OPENCV 2.4.10"
Posting Komentar