Untuk mendapatkan nilai R, G dan B pada suatu gambar,. Maka gambar
yang akan kita deteksi di munculkan terlebih dahulu sebelum di deteksi,.
Dalam mendeteksi ini saya memakai system mencari setiap pixel dari
suatu gambar dari kiri ke kanan dan akan kembali ke kiri lagi dengan
arah kebawah,. Jadi satu gambar akan di deteksi seluruh nya tanpa
kecuali oleh program Delphi 7 ini,. Dari hal diatas maka nilai R, G dan
B suatu gambar akan diperlihatkan angkanya sesuai dengan image yang di
deteksi nya,. dalam hal ini delphi 7 memanfaat kan komponen image,
komponen char, komponen table, komponen button,.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;
type
TForm1 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Chart1: TChart;
Series1: TLineSeries;
Label4: TLabel;
Series2: TLineSeries;
Series3: TLineSeries;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
// ini berfungsi untuk mendeteksi nilai R, G dan B pada saat mouse di gerak kan,. Yang di tampilkan di 3 buah table paling bawah
var R, G, B : byte; // byte integer(nilai)
begin
R:=GetRValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
G:=GetRValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
B:=GetRValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
// dapatkan nilai image dari pixel x,y pada kanvas
// label nilainya tring (bukan angka)
label1.Caption:=inttostr(R);
label2.Caption:=inttostr(G);
label3.Caption:=inttostr(B);
end;
procedure TForm1.Button1Click(Sender: TObject);
// berfungsi untuk mendeteksi secara urut R, G dan B pada suatu image, dalam hal ini bisa di aplikasikan untuk mengukur suatu luasan dalam suatu image..
var R, G, B : byte;
x, y : integer;
begin
for y:=0 to image1.Picture.Bitmap.Height-1 do
begin
series1.Clear;
series2.Clear;
series3.Clear;
for x:=0 to image1.Picture.Bitmap.Width-1 do
begin
R:=GetRValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
G:=GetGValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
B:=GetBValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
label5.Caption:=inttostr(R);
label6.Caption:=inttostr(G);
label7.Caption:=inttostr(B);
series1.AddXY(x,R);
series2.AddXY(x,G);
series3.AddXY(x,B);
Application.ProcessMessages;
sleep(100);
// berfungsi untuk mengatur kecepatan laju dari grafik char yang di pasang dalam Delphi 7
end;
end;
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;
type
TForm1 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Chart1: TChart;
Series1: TLineSeries;
Label4: TLabel;
Series2: TLineSeries;
Series3: TLineSeries;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
// ini berfungsi untuk mendeteksi nilai R, G dan B pada saat mouse di gerak kan,. Yang di tampilkan di 3 buah table paling bawah
var R, G, B : byte; // byte integer(nilai)
begin
R:=GetRValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
G:=GetRValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
B:=GetRValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
// dapatkan nilai image dari pixel x,y pada kanvas
// label nilainya tring (bukan angka)
label1.Caption:=inttostr(R);
label2.Caption:=inttostr(G);
label3.Caption:=inttostr(B);
end;
procedure TForm1.Button1Click(Sender: TObject);
// berfungsi untuk mendeteksi secara urut R, G dan B pada suatu image, dalam hal ini bisa di aplikasikan untuk mengukur suatu luasan dalam suatu image..
var R, G, B : byte;
x, y : integer;
begin
for y:=0 to image1.Picture.Bitmap.Height-1 do
begin
series1.Clear;
series2.Clear;
series3.Clear;
for x:=0 to image1.Picture.Bitmap.Width-1 do
begin
R:=GetRValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
G:=GetGValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
B:=GetBValue(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
label5.Caption:=inttostr(R);
label6.Caption:=inttostr(G);
label7.Caption:=inttostr(B);
series1.AddXY(x,R);
series2.AddXY(x,G);
series3.AddXY(x,B);
Application.ProcessMessages;
sleep(100);
// berfungsi untuk mengatur kecepatan laju dari grafik char yang di pasang dalam Delphi 7
end;
end;
end;
end.
0 komentar:
Post a Comment