You are on page 1of 3

Nama: Rizki Anhar R Putra

NRP: 2210100134

Tugas 3 Machine Vision: Membuat Deteksi Kulit dengan Kalibrasi RGB


Program di Visual Studio 2010:

Listing Program:
#include<cv.h>
#include<highgui.h>
int main()
{
CvCapture*capture=0;
IplImage*frame=0;
IplImage*gray=0;
capture=cvCaptureFromCAM(0);
cvNamedWindow("RGB",1);
cvNamedWindow("Gray",1);
if(capture)
{
for(;;)
{
if( !cvGrabFrame( capture ))
break;
frame = cvRetrieveFrame( capture );
if(!frame)
break;
gray=cvCreateImage(cvSize(frame->width,frame->height),8,1);
for(int x=0;x<frame->width;x++)
for(int y=0;y<frame->height;y++)
{

Nama: Rizki Anhar R Putra


NRP: 2210100134
float total=
(uchar)frame->imageData[frame->widthStep*y+x*frame->nChannels+1]+(uchar)frame>imageData[frame->widthStep*y+x*frame->nChannels+2]+(uchar)frame>imageData[frame->widthStep*y+x*frame->nChannels+3];
float R=
((uchar)frame->imageData[frame->widthStep*y+x*frame->nChannels+1])/(total);
float G=
((uchar)frame->imageData[frame->widthStep*y+x*frame->nChannels+2])/(total);
float B=
((uchar)frame->imageData[frame->widthStep*y+x*frame->nChannels+3])/(total);
if(0<R<0,2 && 0<R<0,3 && 0<R<0,8)
gray->imageData[gray->widthStep*y+x+gray->nChannels]=255;
else
gray->imageData[gray->widthStep*y+x+gray->nChannels]=0;
}
cvCvtColor(frame,gray,CV_RGB2GRAY);
cvShowImage("RGB",frame);
cvShowImage("Gray",gray);
if(cvWaitKey(10)>=0)
break;
}
cvReleaseCapture(&capture);

}
cvDestroyWindow("RGB");
cvDestroyWindow("Gray");
return 0;

Penjelasan Program:
1. CvCapture*capture=0;
= membuat variable capture untuk mengcapture camera
IplImage*frame=0;
= menapung gambar camera
IplImage*gray=0;
= menapung gambar camera
capture=cvCaptureFromCAM(0); = menentukan device untuk mengcapture
gambar(kamera),0 merupakan ID device
cvNamedWindow("RGB",1);
= membuat window dengan nama RGB
cvNamedWindow("Gray",1);
= membuat window dengan nama Gray
2. if(capture)
= jika capture ada maka:
{
for(;;)
= diulang terus menerus
{
if( !cvGrabFrame( capture ))
break;
frame = cvRetrieveFrame( capture );
= akan mengabil gambar berwarna pada
kamera
if(!frame)
= jika tidak ada maka berhenti
break;
gray=cvCreateImage(cvSize(frame->width,frame->height),8,1);
= gray:membuat gambar dengan 8bit dan
satu channel(hitam putih)
for(int x=0;x<frame->width;x++)

Nama: Rizki Anhar R Putra


NRP: 2210100134
3. Program Utama Pengaturan RGB:
{
float total=
(uchar)frame->imageData[frame->widthStep*y+x*frame->nChannels+1]+(uchar)frame>imageData[frame->widthStep*y+x*frame->nChannels+2]+(uchar)frame>imageData[frame->widthStep*y+x*frame->nChannels+3];
= variabel total dengan type data float: R+G+B
float R=
((uchar)frame->imageData[frame->widthStep*y+x*frame->nChannels+1])/(total);
= variabel R dengantype data float: R/total
float G=
((uchar)frame->imageData[frame->widthStep*y+x*frame->nChannels+2])/(total);
= variabel G dengan type data float: G/total
float B=
((uchar)frame->imageData[frame->widthStep*y+x*frame->nChannels+3])/(total);
= variabel B dengan type data float: B/total
if(0<R<0,2 && 0<R<0,3 && 0<R<0,8)
= pengkondisian nilai R,G,B diatur untuk mendapatkan warna kulit
yang sesuai
gray->imageData[gray->widthStep*y+x+gray->nChannels]=255;
else
gray->imageData[gray->widthStep*y+x+gray->nChannels]=0;
}
4. cvCvtColor(frame,gray,CV_RGB2GRAY);
cvShowImage("RGB",frame);
= menampilkan gambar frame ke window
RGB
cvShowImage("Gray",gray);
= menampilkan gambar gray ke window
gray
if(cvWaitKey(10)>=0)
= jika ada tombol yang ditekan maka selesai
break;
}
cvReleaseCapture(&capture);
}
cvDestroyWindow("RGB");
= menghilangkan window RGB
cvDestroyWindow("Gray");
= menghilangkan window Gray
return 0;

HASIL PROGRAM:

You might also like