Anda di halaman 1dari 4
BKPM Pengolahan Citra ~ RMD 61 Acara 214 Acara Praktikum, Deteksi Wajah Menggunakan Kamera ‘Tempat : Laboratorium Komputer Alokasi waktu 22x 100 menit A. Capaian Pembelajaran Mata Kuliah (CPMK) Indikator : = Mahasiswa memahami algortima deteksi wajah menggunakan kamera + Mahasiswa dapat membuat program deteksi wajah dengan algoritma Haar Cascade menggunakan kamera B, Alat dan Bahan * BKPM Komputer Webcam ATK (Alat Tulis Kantor) Literatur atau pustaka yang mendukung pokok bahasan praktikum, File master (Microsoft Visual Studio, OpenCV) HardDisk 1 Terra DVD RW C. Prosedure Kerja 1. Buka Visual Studio 2. Buat project baru Visual C++, dengan menggunakan Console. 3. Masukkan library openCV. 4, Melalui windows Explorer, buka folder > C:\\OpenCV2.1\datathaareaseade 5. Pada folder tersebut, copy file “haarcascade_frontalface_elt.xm”, ke dalam folder program yang dibuat. 6. Siapkan webcam 7. Tulis program dibawah ini include “ev.h" include “highgui .h* include include include include include ‘include include ‘finclude include ifdef ic ‘define WIN32 BKPM Pengolahan Citra ~ RMD 62 endif static CvMemStorage? storage = 0; static CvHaarClassifierCascade* cascade = int use_nested_cascade = 0; void detect_and_draw( IplInage* image ); const char* cascade_nane = “haarcascade frontalface_alt.xnl"; double scale = 1; int main() { cvCapturet capture = 0; IplImage ‘Frame, *¥rame_copy = @; Iplimage ‘image = 0; const char* scale_opt = "--scale="; int scale_opt_len = (int)strlen(scale_opt); const char® cascade_opt = °--cascade="; int cascade_opt_len = (int)strlen(cascade_opt); int 45 const char* input_nane = 0; cascade = (CvHaarClassifierCascade*)cvLoad( cascade_nane, @, ®, @ )i if( Icascade ) { fprintf( stderr, "ERROR: Could not load classifier cascade\n" )| fprintf( stderr, “Usage: Facedetect [--cascade=\"\* ]\n" *[--scale[=\n" — [#ilename|camera_index]\n" )5 return =1; } storage = cvCreateMenStorage(o); capture = cvCaptureFromcaM(2) 5 if( capture ) for(ss) { Af( levGrabFrame( capture )) break; frame = cvRetrieveFrame( capture ); iF( [frame ) breaks af( frame_copy ) frane_copy = cvCreatelnage( cvSize (frane->width, frame->height), IPL_DEPTH_8U, “framo->nChannels ); if( feame-dorigin == IPL_ORIGIN_TL ) cvcopy( frame, frame_copy, @ )3 else evFlip( frame, frane_copy, @ )3 BKPM Pengolahan Citra ~ RMD 63 else } } return @3 cybestroylindow("result"); detect_and_draw( frame_copy ); if( cvwaitkey( 10 ) goto _cleanup. e) } evllaitKey(0) ; _eleanup_ evReleaseImage( &frame_copy ); cvReleaseCapture( &capture ); AF( image ) { detect_and_draw( image ); evllaitKey(0) ; cvReleaseImage( Simage ); else if( input_name ) { /* assume it is a text file containing the List of the image filenames to be processed fone per line */ FILE* # = fopen( input_name, "rt" ); af #) { char buf [100062]; wnile( fgets( buf, 1000, # ) ) { int len = (int)strlen(buf), ¢; wnile( len > @ && isspace(buf(1en-1])) len bufllen] = \e"5 image = cvLoadInage( buf, 1); if( image ) { detect_and_draw( image )5 break; cvReleaseInage( Simage )j ? } Felose(#); BKPM Pengolahan Citra ~ RMD void detect_and_draw( Iplimage* img ) i Iplimage *gray, *small_imgs ant 1,45 gray = cvCreateInage( cvSize(img->width, img-sheight), 8, 1); small_ing = cvCreatermage( cvsize( cvRound (ing->width/scale), cvRound (img->height/scale)), 8, 1); evCvtcolor( img, gray, CV_BGRZGRAY ); cvResize( gray, small_ing, CV_INTER_LINEAR ); cvEqualizeHist( small_ing, small_ing ); cvCleartenstorage( storage }; CvSeqt faces = cvHaarDetectobjects( small_img, cascade, storage, 1.4, 2,0 |(CV_HAAR_FIND_BIGGEST_OBJECT // \@¥_HAAR_DO_ROUGH_SEARCH 7/ |CV_HAAR_O_CANNY_PRUNING 1/ \CU_HAAR_SCALE_IVAGE » evSize(30, 30) i for( 1 = @; 4 < (faces ? faces-total : 0); i+ ) 4 CuRect® r= (CyRect*)cvGotseqelom( faces, i); cvRectangle( ing, cvPoint( r->x, r->y ), evPoint( r-2x + r-suidth,r->y + r->hedght ), CV_RGB(@,255,0),2,8,0); CvMat small_img_rois CvSeat nested_objects; CyPoint center, kaos; int radius; ) cvShowInage( “result”, ing ); cyReleaseTmage( &gray ); cvReleasetmage( asmall_ing ); E. TUGAS 1. Buatlah program untuk mengukur lebar dan tinggi wajah yang terdeteksi serta tentukan koordinat tengahnya! 2. _Kemudian buatlah program untuk mendeteksi berapa jarak antara wajah dengan kamera

Anda mungkin juga menyukai