Anda di halaman 1dari 23

PRAKTIKUM V

KOMUNIKASI KOMPUTER DENGAN WEBCAM


(CAPTURE GAMBAR MENGGUNAKAN KAMERA)

5.1 Tujuan
• Mampu memahami format gambar (gambar maupun video).

• Mampu memehami unsur-unsur gambar.

• Mampu menghubungkan webcame dengan komputer.

• Dapat membuat program untuk melakukan capture gambar.

• Dapat membuat program untuk melakukan perekaman video.

• Dapat membuat program untuk melakukan scaling pada gambar hasil


capture.

• Memahami komponen delphi untuk melakukan perekaman dan capture


gambar.

5.2 Alat dan Bahan


• Program Delphi versi 6 keatas

• Komponen capture dan rekan (DSPACK)

• Kamera usb 1 buah

• Komputer 1 buah

5.3 Dasar teori


A.CITRA (Image)

Secara harfiah, citra (image) adalah gambar pada bidang dwimatra (dua
dimensi). Gambar 1 adalah citra sekelompok manusia dan gambar disebalah
kanannya adalah citra gelas disebuah meja. Ditinjau dari sudut pandang
matematis, citra merupakan fungsi penerus (continue) dari intensitas cahaya
pada bidang dwi matra. Sumber cahaya menerangi objek, objek memantulkan
kembali sebagian dari berkas cahaya tersebut. Pantulan cahaya ini ditangkap
oleh alat-alat

Panduan Praktikum Komunikasi Data 48

optik, misalnya mata pada manusia, kamera, pemindai(scanner), dan


sebagainya, sehingga bayangan objek yang disebut citra tersebut terekam.
Citra sebagai keluaran dari suatu system perekaman data dapat bersifat
(MUR92):

1. Optik berupa foto

2. analog berupa sinyal video seperti gambar pada monitor televisi

3. digital yang dapat langsung disimpan pada suatu pita magnetik

Gambar 1. Gambar citra manusia dan benda

Citra diam adalah citra tunggal yang tidak bergerak. Gambar 1 adalah dua
buah citra diam. Sedangkan citra bergerak adalah rangkaian citra diam yang
ditampilkan secara berurutan (sekuensial) sehingga memberi kesan pada mata
kita sebagai gambar bergerak. Setiap citra didalam rangkaian itu disebut
frame. Gambar-gambar yang tampak pada film layer lebar atau televisi pada
hakekatnya terdiri atas ratusan sampai ribuan frame.

B.
Elemen-elemen Citra

Citra mengandung sejumlah elemen dasar. Elemen-elemen dasar tersebut


dapat dimanipulasi dalam pengolahan citra dan dieksploitasi lebih lanjut
dalam komputer vision. Elemen-elemen dasar yang penting diantaranya :

1. Kecerahan (Brightness)

Kecerahan adalah kata lain untuk intensitas cahaya, kecerahan pada titik
(pixel) di dalam citra bukanlah intensitas riil, tetapi sebenarnya adalah
intensitas rata-rata dari suatu area yang melingkupinya. Sistem visual manusia
mampu menyesuaikan dirinya dengan tingkat kecerahan (brighness level)
mulai dari yang paling rendah sampai yang paling tinggi dengan jangkauan
10¹º.

Panduan Praktikum Komunikasi Data 49

2. Kontras(contrast)

Kontras menyatakan sebaran terang (lighness) dan gelap (darkness) didalam


sebuah gambar. Citra dengan kontras rendah dicirikan oleh sebagian besar
komposisi citranya adalah terang atau sebagian besar gelap. Pada citra kontras
yang baik, komposisi gelap dan terang tersebar secara merata

3. Kontur

Kontur adalah keadaan yang ditimbulkan oleh perubahan intensitas pixel yang
bertetanggaan. Karena adanya perubahan intensitas inilah mata kita mampu
mendeteksi tepi-tepi (edge) objek dalam citra.

4. Warna

Warna adalah persepsi yang dirasakan oleh sistem visual manusia terhadap
panjang gelombang cahaya yang dipantulkan oleh objek. Setiap warna
mempunyai panjang gelombang yang berbeda. Warna merah mempunya
panjang gelombang paling tinggi, sedangkan warna ungu (violet) mempunyai
panjang gelombang paling rendah.

Warna-warna yang diterima oleh mata (sistem visual manusia) merupakan


hasil kombinasi cahaya dengan panjang gelombang berbeda. Penelitian
memperlihatkan bahwa kombinasi warna yang memberikan rentang warna
yang paling lebar adalah red (R), green (G), dan blue (B).

Persepsi sistem visual manusia terhadap warna sangat relative sebab


dipengaruhi oleh banyak kriteria.Salah satunya disebabkan oleh adaptasi yang
menyebabkan distorsi. Misalnya bercak abu-abu disekitar warna hijau akan
tanpak keungu-unguan (distorsi terhadap ruang), atau jika mata melihat warna
hijau lalu langsung dengan cepat melihat warna abu-abu, maka mata
menangkap kesan warna abu-abu tersebut sebagai warna ungu (distorsi
terhadap waktu) (MEN89).

5. Bentuk (shape)

Shape adalah properti intrinsik dari objek tiga dimensi, dengan pengertian
bahwa shape merupakan properti intrinsik utama untuk sistem visual manusia
(BAL82). Manusia lebih sering mengasosiasikan objek

Panduan Praktikum Komunikasi Data 50

dengan bentuknya ketimbang elemen lainnya (warna misalnya). Pada


umumnya, citra yang dibentuk oleh mata merupakan citra dwimatra (2
dimensi). Informasi bentuk objek dapat diekstraksi dari citra pada permulaan
pra-pengolahan dan segmentasi citra. Salah satu tantangan utama pada
komputer vision adalah merepresentasikan bentuk, atau aspek-aspek penting
dari bentuk.

6. Tekstur (texture)

Tekstur dicirikan sebagai distribusi spasial dari derajat keabuan di dalam


sekumpulan pixel-pixel yang bertetangga (JA195). Jadi, tekstur tidak dapat
didefinisikan untuk sebuah pixel. Sistem visual manusia pada hakikatnya
tidak menerima informasi citra secara independent terhadap setiap pixel,
melainkan suatu citra dianggap sebagai satu kesatuan. Resolusi citra yang
diamati ditentukan oleh skala pada mana tekstur tersebut dipersepsi. Sebagai
contoh, jika kita mengamati citra lantai berubin dari jarak jauh, maka kita
mengamati bahwa tekstur terbentuk dari penempatan ubin-ubin secara
keseluruhan, bukan dari persepsi pola di dalam ubin itu sendiri. Tetapi, jika
kita mengamati citra yang sama dari jarak yang dekat, maka hanya beberapa
ubin yang tampak dalam bidang pengamatan, sehingga kita mempersepsi
bahwa tekstur terbentuk oleh penempatan pola-pola rinci yang menyusun tiap
ubin

C. Komponen DSPACK

Untuk melakukan captute gambar maupun perekan di delphi, ada beberapa


komponen yang tidak disediakan oleh delphi. Ada banyak komponen untuk
melakukan capture gambar maupun perekaman video, salah satunya adalah
menggunakan komponen DSPACK. Komponen DSPACK dapat didownload
di alamat www.progdigy.com file yang didapatkan berupa file kompresi.
Setelah mendapatkan file DSPACK langkah berikutnya adalah melakukan
instalasi komponen ke program delphi. (Cara penginstalan komponen file
DSPACK sesuai dengan pengintstalan komponen file Cport).

5.4 Tugas Pratikum


Buatlah program untuk melakukan capture gambar dengan cara mengikuti
langkah-langkah berikut ini!

a. Buka program Delphi dan buat aplikasi baru

b. Tambahkan komponen pada form satu buah panel, tiga buah tombol, dua
buah image, satu buah videowindow, satu buah combobox, satu buah
filtergraph, satu buah samplegrabber, satu buah filter, satu buah timer, dan
satu buah savedialog. Selanjutnya atur tata letak komponen-komponen
tersebut seperti gambar dibawah ini

Gambar 2. Tata letak komponen

c. Ubah beberapa property form dan komponen menurut tabel berikut ini:
Tabel 1. Setting Property form dan komponen
Komponen Property Setting
Form Caption Capture Gambar
Name Frmcapture
Button1 Caption Cari Perangkat
Name Btperangkat
Button2 Caption Capture
Name Btcapture
Button3 Caption Exit
Name Btexit
Image1 Name Imgtampil
Image2 Name Imgsave
Combobox1 Text Cari Perangkat
Name Cbperangkat
Filter1 FilterGraph FilterGraph1
SampleGrabber1 FilterGraph FilterGraph1
VideoWindow1 FilterGraph FilterGraph1

d.Untuk mencari perangkat kamera yang aktif , gunakan prosedur dibawah


ini!

procedure Tfrmcapture.btperangkatClick(Sender:

TObject);

var i:integer;

begin

CapEnum:=SysDevEnum.Create(CLSID_VideoInputDeviceCategory);

for i := 0 to CapEnum.CountFilters - 1 do

begin

cbperangkat.Items.Add(CapEnum.Filters[i].FriendlyName);

end;

end;

e.Untuk menggunakan kamera yang aktif, gunakan prosedur dibawah ini!

Procedure Tfrmcapture.OnSelectDevice(sender:

TObject);

begin

FilterGraph1.ClearGraph;
FilterGraph1.Active := false;

Filter1.BaseFilter.Moniker:=CapEnum.GetMoniker

(cbperangkat.ItemIndex);

FilterGraph1.Active := true;

with FilterGraph1 as ICaptureGraphBuilder2 do

Renderstream(@PIN_CATEGORY_PREVIEW, nil, Filter1

Panduan Praktikum Komunikasi Data 53

as IBaseFilter,SampleGrabber1 as IBaseFilter, VideoWindow1 as


IbaseFilter);

FilterGraph1.Play;

end;

f. Ketikkan kode program dibawah ini untuk membuat prosedur captur


gambar dengan cara double klik pada btcapture.

Procedure Tfrmcapture.btcaptureClick(Sender:

TObject);

begin

samplegrabber1.GetBitmap(Imgtampil.Picture. Bitmap);

imgsave.Picture:=imgtampil.Picture;

timer1.Enabled:=true;

end;

g. Ketikkan kode program dibawah ini untuk membuat prosedur penyimpanan


gambar hasil capture dengan cara double klik pada timer1.

procedure Tfrmcapture.Timer1Timer(Sender: TObject);


var tanggal,waktu:string;

begin

TimeSeparator:='_';

waktu:=TimeToStr(time);

image2.Picture.SaveToFile('E:\project\webcamcapture\'+waktu+'.bmp');

timer1.Enabled:=false;

end;

h. Jalankan program dan perbaiki jika terjadi kesalahan!

Catatan : gunakan unit-unit berikut ini Spin, jpeg, DSPack, DirectShow9,


dan DSUtil.

5.5 Flowchart dan program


a. Flowchart program
b. Script program
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DSPack, ExtCtrls, StdCtrls, Spin, jpeg, DirectShow9, DSUtil;

type
TFrmcapture = class(TForm)
GroupBox1: TGroupBox;
Imgtampil: TImage;
Imgsave: TImage;
Filter1: TFilter;
SampleGrabber1: TSampleGrabber;
VideoWindow1: TDSVideoWindowEx2;
Cbperangkat: TComboBox;
Btperangkat: TButton;
Btcapture: TButton;
Btexit: TButton;
SaveDialog1: TSaveDialog;
Timer1: TTimer;
FilterGraph1: TFilterGraph;
procedure BtperangkatClick(Sender: TObject);
procedure CbperangkatClick(Sender: TObject);
procedure BtcaptureClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure BtexitClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Frmcapture: TFrmcapture;
CapEnum: TSysDevEnum;
implementation

{$R *.dfm}
procedure TFrmcapture.BtperangkatClick(Sender: TObject);
var i:integer;
begin
CapEnum:=TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
for i:=0 to CapEnum.Countfilters - 1 do
begin
Cbperangkat.Items.Add(CapEnum.Filters[i].FriendlyName);
end;
end;

procedure TFrmcapture.CbperangkatClick(Sender: TObject);


begin
FilterGraph1.ClearGraph;
FilterGraph1.Active:=false;

Filter1.BaseFilter.Moniker:=CapEnum.GetMoniker(Cbperangkat.ItemIndex);
FilterGraph1.Active:=True;
with FilterGraph1 as ICaptureGraphBuilder2
do Renderstream(@PIN_CATEGORY_PREVIEW,nil,Filter1
as IBasefilter,SampleGrabber1 as IBasefilter, VideoWindow1 as
IbaseFilter);
FilterGraph1.Play;
end;

procedure TFrmcapture.BtcaptureClick(Sender: TObject);


begin
SampleGrabber1.GetBitmap(imgtampil.Picture.Bitmap);
Application.MessageBox('GAMBAR TERSIMPAN','ALERT!!',MB_OK);
Imgsave.Picture:=Imgtampil.Picture;
Timer1.Enabled:=True;
end;

procedure TFrmcapture.Timer1Timer(Sender: TObject);


var
waktu:string;
begin
TimeSeparator:='_';
waktu:=TimeToStr(time);
Imgsave.Picture.SaveToFile('E:\POLINEMA\KULIAH SEMESTER 4\prak
komunikasi data\capturegambar'+waktu+'.jpeg');
Timer1.Enabled:=False;
end;

procedure TFrmcapture.BtexitClick(Sender: TObject);


begin
Application.Terminate;
end;

end.

5.6 Hasil percobaan

Gambar 3. Tampilan awal ketika program di run


1. Klik button “cari perangkat” maka button tersebut akan mecari jenis
kamera pada PC anda
2. Pada comobox terdapat beberapa jenis kamera perangkat yang dapat
dipilih
3. Ketika button capture ditekan maka akan muncul alert “gambar
tersimpan” dan gambar hasil capture akan tampil pada imgtampil dan akan
tersimpan pada folder sesuai yang diatur pada script program yaitu
“E:\POLINEMA\KULIAH SEMESTER 4\prak komunikasi
data\capturegambar”
Gambar 4. Hasil running ketika button capture ditekan

Gambar 5. Gambar di simpan di folder yang telah diatur

5.7 Tugas Pengembangan


5.7.1 Source code tugas pengembangan
var
Form1: TForm1;
CapEnum: TSysDevEnum;
VideoMediaTypes: TEnumMediaType;
SimpanFile : widestring;

implementation

{$R *.dfm}
PROCEDURE TForm1.MODEAKTIF;
var PinList: TPinList;
BEGIN
if filtergraph1.Active then filtergraph1.Active:=false;
Filtergraph1.ClearGraph;
filtergraph1.Active:=true;
// configure output Video media type
if Filter1.FilterGraph <> nil then
begin
PinList := TPinList.Create(Filter1 as IBaseFilter);
if CBKam1_1.ItemIndex <> -1 then
with (PinList.First as IAMStreamConfig) do

SetFormat(VideoMediaTypes.Items[CBKam1_1.ItemIndex].AMMediaType
^);
PinList.Free;
end;
// now render streams
with FilterGraph1 as IcaptureGraphBuilder2 do
begin
// Connect Video preview (VideoWindow)
if Filter1.BaseFilter.DataLength > 0 then
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter1 as
IBaseFilter,
Samplegrabber1 as IBaseFilter , VideoWindow1 as IBaseFilter);
end;
FilterGraph1.Play;
END;

procedure TForm1.FormCreate(Sender: TObject);


begin
listingDevice;
end;

procedure TForm1.listingDevice;
var i: integer;
begin
CapEnum:=TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
For i:=0 to CapEnum.CountFilters - 1 do
begin
ComboBox1.Items.Add(CapEnum.Filters[i].FriendlyName);
end;
VideoMediaTypes:= TEnumMediaType.Create;
end;

procedure TForm1.ComboBox1Click(Sender: TObject);


var PinList: TPinList;
VideoFormat: TPinList;
x: integer;
begin
CapEnum.SelectGUIDCategory(CLSID_VideoInputDeviceCategory);
if ComboBox1.ItemIndex <> -1 then
begin
FilterGraph1.ClearGraph;
FilterGraph1.Active :=false;
Filter1.BaseFilter.Moniker :=
CapEnum.GetMoniker(ComboBox1.ItemIndex);
FilterGraph1.Active := true;
// configure output Video media type
if Filter1.FilterGraph <> nil then
begin
PinList := TPinList.Create(Filter1 as IBaseFilter);
if CBKam1_1.ItemIndex <> -1 then
with (PinList.First as IAMStreamConfig) do

SetFormat(VideoMediaTypes.Items[CBKam1_1.ItemIndex].AMMediaType
^);
PinList.Free;
end;

with FilterGraph1 as IcaptureGraphBuilder2 do


begin
// Connect Video preview (VideoWindow)
if Filter1.BaseFilter.DataLength > 0 then
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter1 as
IBaseFilter,
Samplegrabber1 as IBaseFilter , VideoWindow1 as IBaseFilter);

VideoFormat := TPinList.Create(Filter1 as IBaseFilter);


CBKam1_1.Clear;
VideoMediaTypes.Assign(VideoFormat.First);
if (trim(ComboBox1.Text)='Video WebCam') then
begin
// tampilkan hanya ukuran gambar saja
for x:=0 to round((VideoMediaTypes.Count/2)-1) do
CBKam1_1.Items.Add(trim(copy(VideoMediaTypes.MediaDescription[2*x]
,pos('X',VideoMediaTypes.MediaDescription[2*x])-
8,length(VideoMediaTypes.MediaDescription[2*x]))));
end
else
begin
//tampilkan hanya ukuran gambar saja
for x:=0 to VideoMediaTypes.Count-1 do

CBKam1_1.Items.Add(trim(copy(VideoMediaTypes.MediaDescription[x],p
os('X',VideoMediaTypes.MediaDescription[x])-
8,length(VideoMediaTypes.MediaDescription[x]))));
end;
CBKam1_1.ItemIndex:=0;
// FilterGraph1.Active := false;
VideoFormat.Free;
end;
FilterGraph1.Play;
end;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose:


Boolean);
begin
capenum.Free;
FilterGraph1.ClearGraph;
FilterGraph1.Active := false;
end;

procedure TForm1.BtcaptureClick(Sender: TObject);


begin
samplegrabber1.GetBitmap(Imgtampil.Picture.Bitmap);
Application.MessageBox('GAMBAR TERSIMPAN','ALERT!!',MB_OK);
Imgtampil.Picture.SaveToFile('E:\POLINEMA\KULIAH SEMESTER 4\prak
komunikasi data\'+FormatDateTime('MM_yyyy_HHmmss',now)+'.bmp');
end;

procedure TForm1.Button1Click(Sender: TObject);


begin
Application.Terminate;
end;

procedure TForm1.Button2Click(Sender: TObject);


begin
Imgtampil.Picture.Bitmap.Assign(nil);
end;

procedure TForm1.BtrecordClick(Sender: TObject);


var multiplexer: IBaseFilter;
Writer: IFileSinkFilter;
i:integer;
PinList: TPinList;
begin
try
if Btrecord.Caption='Record' then
BEGIN
Btrecord.Caption:='STOP';
VideoMediaTypes.MediaDescription[i];
SimpanFile:='E:\POLINEMA\KULIAH SEMESTER 4\prak komunikasi
data\'+FormatDateTime('yyyyMMddHHmmss',now)+'.avi';

if FilterGraph1.Active then FilterGraph1.Active:=false;


FilterGraph1.ClearGraph;
FilterGraph1.Active:=true;
if Filter1.FilterGraph <> nil then
begin
PinList := TPinList.Create(Filter1 as IBaseFilter);
if CBKam1_1.ItemIndex <> -1 then
with (PinList.First as IAMStreamConfig) do

SetFormat(VideoMediaTypes.Items[CBKam1_1.ItemIndex].AMMediaType
^);
PinList.Free;
end;
// now render streams
with FilterGraph1 as IcaptureGraphBuilder2 do
begin
// set the output filename
SetOutputFileName(MEDIASUBTYPE_avi, PWideChar(SimpanFile),
multiplexer, Writer);
// Connect Video preview (VideoWindow)
if Filter1.BaseFilter.DataLength > 0 then
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter1 as
IBaseFilter,
Samplegrabber1 as IBaseFilter , VideoWindow1 as IBaseFilter);
// Connect Video capture streams
if Filter1.FilterGraph <> nil then
RenderStream(@PIN_CATEGORY_CAPTURE, nil, Filter1 as
IBaseFilter,
nil, multiplexer as IBaseFilter);
FilterGraph1.Play;

end;
END ELSE
BEGIN
Btrecord.Caption:='Record';
MODEAKTIF;
Application.MessageBox('VIDEO TERSIMPAN','ALERT!!',MB_OK);
END
except
end
end;
procedure TForm1.Button3Click(Sender: TObject);
var i: integer;
begin
CapEnum:=TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
For i:=0 to CapEnum.CountFilters - 1 do
begin
ComboBox1.Items.Add(CapEnum.Filters[i].FriendlyName);
end;
VideoMediaTypes:= TEnumMediaType.Create;
end;
end.
5.7.2 Hasil running tugas pengembangan
1.

Gambar 6. Hasil tampilan setelah ditambah fitur recording video


2. Seperti pada program sebelumnya klik tombol klik perangkat, maka akan
tampil beberapa kamera yang tersedia di PC nada
3. Untuk recording video pilih resolusi video yang ingin anda gunakan

Gambar 6. Tampilan beberapa resolusi video yang bisa digunakan


4. Klik tombol recording untuk memulai record video, jika ingin mengakhir
klik tombol stop

Gambar 7. Tampilan ketika melakukan recording video


5. Selanjutnya video akan tersimpan pada folder yang sudah diatur pada
source code

Gmabr 8. Hasil simpan video yang telah direcording sebelumnya.


5.7.3 Pada percobaan dengan menambah fitur recording, semakin kecil
resolusi yang digunakan maka pasa recording tidak bisa dilakukan.

5.8 Kesimpulan
Dari praktikum yang telah dilakukan, dapat disimpulkan bahwa :

1. Unsur-unsur gambar terdiri dari bentuk (shape), kontur, warna, kontras


(contrast), kecerahan (brightness), tekstur (texture).
2. Listing program webcam ini fungsi utamanya yaitu mengkoneksikan
antara media perangkat keras hardware kamera dengan perangkat lunak
yaitu program Delphi 7 webcam
3. DSPACK merupakan komponen tambahan pada delphi yang dapat
digunakan untuk menghubungkan delphi dengan webcamera, dan CCTV.

Anda mungkin juga menyukai