Setelah berhasil menampilkan gambar dari webcam, langkah selanjutnya ialah melakukan konversi format gambar dari RGB menjadi Grayscale. Grayscale adalah suatu format citra atau gambar dimana tiap-tiap piksel gambar hanya terdiri dari 1 channel warna. Perbedaan mendasar dengan format RGB ialah pada tiap-tiap piksel gambar terdiri dari 3 channel warna, yaitu channel R(red), channel G(green), dan channel B(blue).
Salah satu Algoritma buat mengkonversi image dari format RGB ke Grayscale ialah dengan me-rerata nilai ketiga buah channel RGB.
Grayscale = (R+G+B) / 3.
Pada bahasan kali ini akan digunakan fungsi dari Library OpenCV untuk mengkonversi gambar dari RGB ke Grayscale.
cvCvtColor(image sumber,image tujuan,CV_RGB2GRAY);
image sumber adalah image RGB sedangkan image tujuan adalah image grayscale yang akan dibuat. Namun terlebih dahulu harus dibuat deklarasi pointer untuk image grayscale, yaitu dengan cara seperti berikut.
IplImage* gray = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
maksud dari IPL_DEPTH_8U adalah tiap-tiap piksel bernilai 8 bit, sementara angka 1 setelahnya itu bermakna tiap-tiap piksel hanya terdiri dari sebuah channel. Berikut adalah listing program secara lengkap
#include "stdafx.h"
#include <highgui.h>
#include <ml.h>
#include <cv.h>
#include <cxcore.h>
int _tmain(int argc, _TCHAR* argv[])
{
int c;
#include <ml.h>
#include <cv.h>
#include <cxcore.h>
int _tmain(int argc, _TCHAR* argv[])
{
int c;
//deklarasi pointer dengan nama img
IplImage *img;
IplImage *img;
//capture video dari kamera dg ID "1
CvCapture* capture = cvCaptureFromCAM(1);
CvCapture* capture = cvCaptureFromCAM(1);
// membuat window dengan nama gambar gue dan gray image
cvNamedWindow("gambargue", CV_WINDOW_AUTOSIZE);
cvNamedWindow("gray image", CV_WINDOW_AUTOSIZE);
while(1)
{
//memasukan gambar hasil capture ke pointer dengan nama img
img=cvQueryFrame(capture);
cvNamedWindow("gambargue", CV_WINDOW_AUTOSIZE);
cvNamedWindow("gray image", CV_WINDOW_AUTOSIZE);
while(1)
{
//memasukan gambar hasil capture ke pointer dengan nama img
img=cvQueryFrame(capture);
//deklarasi frame dengan nama grey, 8 bit, 1 channel
IplImage* gray = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
IplImage* gray = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
//melakukan konversi image dari format RGB menjadi Grayscale
cvCvtColor(img,gray,CV_RGB2GRAY);
//menampilkan gambar dari pointer img dan gray ke window gambargue dan gray image
cvShowImage("gambargue", img);
cvShowImage("gray image",gray);
c=cvWaitKey(10);
if(c == 27)
break;
}
return 0;
}
cvCvtColor(img,gray,CV_RGB2GRAY);
//menampilkan gambar dari pointer img dan gray ke window gambargue dan gray image
cvShowImage("gambargue", img);
cvShowImage("gray image",gray);
c=cvWaitKey(10);
if(c == 27)
break;
}
return 0;
}
0 komentar:
Posting Komentar