Anda di halaman 1dari 7

Pen gantar mukaan Komputer

dan P er ala ta n Video


Muhammad Iqbal
Email: barcode_bima@yahoo.co.id web: http://www.creative-instrument.com

Pendahuluan

Seakan berpacu dengan waktu, tak hentinya teknologi video camera telah begitu
pesatnya berkembang, bahkan pada alat sekecil telepon genggampun, video camera telah
mampu menempel dengan baik dan dengan kualitas yang sudah cukup memuaskan
pengguna pada umumnya. Fenomena ini menyebabkan persaingan kualitas dan semakin
murahnya harga sebuah camera video. Mengingat hal tersebut dimasa depan pemanfaatan
terhadap teknologi ini akan menjadi suatu fenomena baru bagi para designer baik
elektronika maupun perangkat lunak dalam membuat peralatan ini menjadi lebih berdaya
guna tidak hanya sebagai perlatan perekam tetapi mampu memberikan fungsi-fungsi yang
lebih.
Pengantarmukaan peralatan-peralatan video ini dengan computer mungkin
merupakan salah satu cara untuk memanfaatkan peralatan video camera ini menjadi lebih
berdaya guna dan juga sebaliknya agar computer juga menjadi lebih berdaya guna dengan
menempatkan peralatan seperti video camera ini. Sehingga akan dihasilkan karya-karya
baru dari teknik-teknik pengantarmukaan ini.

Gambar. Berbagai Jenis WebCam dan Kamera Video

Sistem pengaman rumah, video monitoring, system pengenalan wajah dan masih
banyak lagi merupakan beberapa contoh aplikasi yang telah dikembangkan menggunakan
komunikasi kedua perlatan ini.

Video For Windows (VFW)

Pada pengantarmukaan Komputer dengan peralatan video ini pada Delphi


dibutuhkan penerjemah fungsi-fungsi yang ada dalam driver sebuah peralatan video yang
kita miliki. Pada praktikum kali ini kita akan menggunakan unit yang bernama Video For
Windows (VFW) karena selain free juga tidak kalah fasilitas dengan komponen-
komponen komersial. Unit “Vfw.Pas” ini adalah merupakan unit terjemahan dalam
bahasa Pascal (Microsoft sendiri menyediakanya dalam bentuk Vfw.H untuk bahasa
C/C++ ) untuk pengantarmukaan dari avifil32.dll yang merupakan kumpulan fungsi
standar yang disediakan oleh Microsoft untuk mengakses beberapa peralatan video.
Vfw.pas ini dapat anda download di http://www.swiftsoft.de/free/vfw.zip.
Untuk diketahui bahwa penggunaan unit VFW ini selalu membutuhkan driver dari
peralatan yang kita gunakan sehingga sebelum memulai semuanya sebaiknya anda
menginstall terlebih dahulu driver dari peralatan yang anda gunakan.

Koneksi VFW

Seperti halnya unit lain untuk menngunakan unit VFW kita hanya perlu
memasukanya ke dalam klausa uses. Dan untuk pertama kali kita perlu membuat sebuah
handle dari window yang menampung capture yang akan dilakukan. Berikut cara
membuat handle dan mengecek koneksi terhadap driver video.

FCapWndHandle := capCreateCaptureWindow(' nama window ', WS_CHILD or


WS_VISIBLE,
titkxawal, titikyawal, lebar, tinggi, handle komponen penampil, 0);
if capDriverConnect(FCapWndHandle, 0) then
begin
{****lakukan sesuatu bila driver tersambung, dibawah ini adalah salah satu pilihan
yang sering dilakukan **********}
{ capOverlay(FCapWndHandle, True);
capPreviewScale(FCapWndHandle, True);
capPreview(FCapWndHandle, TRUE);
capPreviewRate(FCapWndHandle, 50);}
end
else
begin
ShowMessage('No Capture Device');
end;
Pada komponen timer kodenya kira-kira seperti dibawah ini:
capGrabFrame(FCapWndHandle);
capEditCopy(FCapWndHandle);
capOverlay(FCapWndHandle, TRUE);
capPreview(FCapWndHandle, TRUE);
capPreviewScale(FCapWndHandle, True);

Perintah diatas menghasilkan sebuah bitmap yang disimpan dalam clipboard


untuk setiap framenya sehingga jika kita menangkapnya dalam sebuah bitmap setiap
waktu maka akan menjadi sebuah video. Perintah untuk membuat dan menangkap bitmap
dalam clipboard dan menampungnya dalam sebuat komponen TImage yaitu Image1
tersebut seperti berikut:

Bitmap1 := TBitmap.Create;
try
Bitmap1.Assign(Clipboard);
Image1.Picture.Bitmap.Width := Bitmap1.Width;
Image1.Picture.Bitmap.Height := Bitmap1.Height;
Image1.Canvas.CopyRect(Rect(0, 0, Bitmap1.Width, Bitmap1.Height),
Bitmap1.Canvas, Rect(0, 0, Bitmap1.Width, Bitmap1.Height));
finally
Bitmap1.Free;

Untuk menjadikanya sebuah video tinggal kita menemptkan semua listing


program diatas didalam sebuah komponen Timer.

Projek:

Sekarang setelah kita tahu cara mengkoneksikan unit VFW tersebut dan
menampung hasilnya sekarang kita akan langsung mencoba untuk membuat sebuah
aplikasi sederhana yaitu aplikasi yang dapat melakukan capture terhadap video yang
ditampilkan dengan menekan tombol capture misalnya.
Masukan beberapa komponen Delphi dan beri nilai sesuai dengan valuenya
seperti pada daftar komponen dibawah ini yaitu:

No Komponen Properties Value


1 Panel1 BevelOuter BvLowered
2 Panel2 BevelOuter BvLowered
Align AlClient
3 SpeedButton1 AllowAllUp True
Caption Konek
GroupIndex 2
4 SpeedButton2 AllowAllUp True
Caption Capture
GroupIndex 3
5 SpeedButton3 AllowAllUp True
Caption Video Source
SpeedButton3 AllowAllUp True
Caption Video Format
6 Image1 Propotional True
Strecth True

Kemudian aturlah tampilanya seperti dibawah ini misalnya:


Berikut adalah listing lengkap dari program diatas:
unit contohku;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls,vfw,clipbrd, Buttons, StdCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
Timer1: TTimer;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Panel2: TPanel;
Image1: TImage;
Button1: TButton;
Button2: TButton;
procedure SpeedButton1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
FCapWndHandle: HWND;

implementation
{$R *.dfm}

procedure TForm1.SpeedButton1Click(Sender: TObject);


begin
if TSpeedButton(Sender).Down then
begin
FCapWndHandle := capCreateCaptureWindow(' Capture ', WS_CHILD or
WS_VISIBLE,
1, 1, 321, 241, Panel2.Handle, 0);
if capDriverConnect(FCapWndHandle, 0) then
begin
capOverlay(FCapWndHandle, True);
capPreviewScale(FCapWndHandle, True);
capPreview(FCapWndHandle, TRUE);
capPreviewRate(FCapWndHandle, 50);
SpeedButton2.Enabled := True;
end
else
begin
ShowMessage('No Capture Device');
TSpeedButton(Sender).Down := False;
end;
end
else
begin
capDriverDisconnect(FCapWndHandle);
SpeedButton2.Enabled := False;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);


var vRect1: TRect;
xBitmap1: TBitmap;
vWidth, vHeight: Integer;
vAngle: Integer;
begin
if speedbutton2.Down then
begin
try
Timer1.Enabled := False;
capGrabFrame(FCapWndHandle);
capEditCopy(FCapWndHandle);
capOverlay(FCapWndHandle, TRUE);
capPreview(FCapWndHandle, TRUE);
capPreviewScale(FCapWndHandle, True);
xBitmap1 := TBitmap.Create;
try
xBitmap1.Assign(Clipboard);
Image1.Picture.Bitmap.Width := xBitmap1.Width;
Image1.Picture.Bitmap.Height := xBitmap1.Height;
Image1.Canvas.CopyRect(Rect(0, 0, xBitmap1.Width, xBitmap1.Height),
xBitmap1.Canvas, Rect(0, 0, xBitmap1.Width, xBitmap1.Height));
image1.Picture.Bitmap.Assign(xbitmap1);
finally
xBitmap1.Free;
end;
except
end;
SpeedButton2.Down := False;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);


begin
{*****untuk menampilkan kotak dialog pemilihan driver video yang
digunakan****************}
{*****hal ini akan sangat berguna jika ada lebih dari satu driver di dalam
computer**************}

capDlgVideoSource(FCapWndHandle);
end;

procedure TForm1.Button2Click(Sender: TObject);


begin
{*****untuk menampilkan kotak dialog pemilihan Format hasil yang
digunakan****************}
{*****hal ini akan sangat berguna jika format data tertentu yang anda
inginkan**************}

capDlgVideoFormat(FCapWndHandle);
end;

end.

FcapWndHandle adalah sebuah handle yang disediakan untuk menampung


window atau jendela pada proses pembuatan objek capture dari driver alat video yang
kita kehendaki, oleh karena itu objek inilah yang akan selalu kita ambil pada saat
mengambil, atau memanggil prosedur dan fungsi yang lain.
Berikut adalah penjelasan dari beberapa perintah diatas:
1. capGrabFrame(FCapWndHandle); sebuah perintah yang memisahkan setiap
grabber menjadi beberapa bitmap frame dari FcapWndHandle.
2. capEditCopy(FCapWndHandle); perintah yang mengambil (copy) bitmap per
frame ke dalam clipboard.
3. capOverlay(FCapWndHandle, TRUE); perintah melakukan overlay / penumpukan
gambar (jika TRUE) pada setiap framenya.
4. capPreview(FCapWndHandle, TRUE); perintah menampilkan (preview) dari
setiap frame (jika TRUE). Perintah ini akan menampilkan (mempreview) pada
panel2 karena handle dari FCapWndHandle kita serahkan pada panel2 (lihat lagi
listing diatas).

Setelah kita berhasil menampilkanya di panel, kemudian pada listing diatas kita
kemudian menampilkannya pada komponen bitmap, sehingga kita perlu membuat sebuah
bitmap dengan xBitmap1 := TBitmap.Create; . Objek bitmap ini masih kosong sehingga
kemudian kita isi dengan bitmap yang ada pada clipboard (sama dengan
FCapWndHandle) kemudian barulah mengisinya ke komponen visual bitmap yaitu
image1.Picture.Bitmap.Assign(xbitmap1);
Jadi pada listing diatas seharusnya akan menampilkan dua preview yang sama hanya
saja mempunyai metode yang berbeda dalam menampilkanya.

-----------------GOOD LUCK!!--------------------