AGENDA
Tutorials - OpenCV
Latihan 10 : Pendeteksian Object Bola Merah

Program ini akan mendeteksi object bola yang berwarna merah.



Pendeteksian Object Bola Berwarna Merah

Berikut langkah-langkah dalam pembuatan programnya :

1) Pertama-tama buka aplikasi Microsoft Visual  Studio 2012  yang sudah terintall sebelumnya. Kemudian buatlah New Project dengan cara : pilih file » New » New Project, seperti gambar berikut :

2) Lalu akan muncul jendela New Project pilihlah » Visual C++ » Win32 Console Application kemudian beri nama project “pendektesianObjectBolaBerwarnaMerah” dan tentukan lokasi penyimpanannya » Klik Ok, seperti gambar berikut :

3) Kemudian akan muncul jendela Win32 Application Wizard – pendektesianObjectBolaBerwarnaMerah » Klik Next

4) Lalu pilihlah Console Application dan cheklistlah Empty Project » Klik Finish.

5) Lalu akan muncul jendela pendektesianObjectBolaBerwarnaMerah - Microsoft Visual Studio lalu klik kanan pada nama project yang anda buat, pilihlah Add » New Item.

6) Kemudian akan muncul jendela Add New Item – pendektesianObjectBolaBerwarnaMerah,pilihlah Visual C++ » C++ File (.cpp) » beri nama “pendektesianObjectBolaBerwarnaMerah”» tentukan lokasi penyimpanan »klik Add

7) Kemudian lakukan konfigurasi openCV pada Microsoft Visual Studio 2012. Langkah-langkah untuk melakukan konfigurasi pada Microsoft Visual Studio dapat dilihat pada bahasan sebelumnya.

8) Setelah itu masukan Codding berikut ini :

// Nama Program   : pendektesianObjectBolaBerwarnaMerah.cpp
// Tanggal	   : Februari 2015
// Deskripsi	   : Mendeteksi berwarna merah

#include<opencv/cvaux.h>
#include<opencv/highgui.h>
#include<opencv/cxcore.h>
#include<stdio.h>
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
#include<math.h>
#include<float.h>
#include<limits.h>
#include<time.h>
#include<ctype.h>
#include<fstream>

int main()
{
CvSize size = cvSize(640,480); 
CvCapture* capture = cvCaptureFromCAM(0); 
//Change to -1,1 or 2 if 0 does not work
cvWaitKey(0);
if( !capture )
	{ 
	fprintf(stderr, "ERROR: capture is NULL \n" ); 
	getchar();	
	return -1; 
	}
while( 1 )
	{
	IplImage* frame = cvQueryFrame( capture );
	if( !frame ) 
	    { 
		fprintf(stderr, "" ); 
		getchar(); 
		break;
	    }
cvNamedWindow("Camera", CV_WINDOW_AUTOSIZE );
cvNamedWindow("HSV", CV_WINDOW_AUTOSIZE );
cvNamedWindow("EdgeDetection", CV_WINDOW_AUTOSIZE );
CvScalar hsv_min = cvScalar(150, 84, 130, 0); 
CvScalar hsv_max = cvScalar(358, 256, 255, 0);
IplImage * hsv_frame = cvCreateImage(size, IPL_DEPTH_8U, 3); 
IplImage* thresholded = cvCreateImage(size, IPL_DEPTH_8U, 1);
cvCvtColor(frame, hsv_frame, CV_BGR2HSV);
cvInRangeS(hsv_frame, hsv_min, hsv_max, thresholded);
CvMemStorage* storage = cvCreateMemStorage(0);
cvSmooth(thresholded, thresholded, CV_GAUSSIAN, 9, 9 );
CvSeq* circles = cvHoughCircles(thresholded, storage, CV_HOUGH_GRADIENT, 2, thresholded->height/4, 100, 50, 10, 400);
for (int i = 0; i< circles->total; i++) 
{ 
float* p = (float*)cvGetSeqElem( circles, i ); 
printf("Ball! x=%f y=%f r=%f\n\r",p[0],p[1],p[2] );
cvCircle( frame, cvPoint(cvRound(p[0]),cvRound(p[1])),3, CV_RGB(0,255,0), -1, 8, 0 );
cvCircle( frame, cvPoint(cvRound(p[0]),cvRound(p[1])),cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 ); 
}
cvShowImage("Camera", frame ); 
cvShowImage("HSV", hsv_frame); 
cvShowImage("After Color Filtering", thresholded ); 
cvReleaseMemStorage(&storage);
if( (cvWaitKey(10) & 255) == 27 ) break;
cvReleaseCapture(&capture ); 
cvDestroyWindow("mywindow" ); 
cvWaitKey ( 0 );
return 0;
}
}

9) Kemudian apabila telah selesai, Tekan F5 untuk menjalankan program tersebut. Hasilnya adalah seperti gambar berikut :

Like or Share This Article



COMMENTS ( 0 )
 
Keep connected with us, mobile apps available now !!