Arsip: tanya biner to matriks

more 13 years ago
diandewi
haloo....mau nanya...
saya punya source code ngubah image biner jadi matriks tp kok outputnya 1 semua ya...
saya bingung salahnya dimana. trus imagenya kan berukuran 46x56 pixel, bukankah matriksnya juga berukuran segitu ya?
mohon koreksinya..
[code:1:be36ad12e0] var
W,H,i,j,rata: Integer;
warna : TColor;
red,green,blue : byte;
urutan: Integer;
begin
W := Image1.Width;
H := Image1.Height;
for i:=0 to W-1 do
begin
for j:=0 to H-1 do
begin
warna := Image1.Canvas.Pixels[i,j];
red := GetRValue(warna);
green := GetGValue(warna);
blue := GetBValue(warna);
rata := (red+green+blue) div 3;
if rata > 127 then
begin
rata := 255;
end
else
begin
rata := 0;
end;
warna := RGB(rata,rata,rata);
Image3.Canvas.Pixels[i,j] := warna;
Image3.Picture.SaveToFile('picture/biner'+IntToStr(urutan)+'.bmp');
end;
end;
end;
procedure TUser.Button3Click(Sender: TObject);
var
a,b,x,y,hkotak,wkotak,rata : Integer;
M : array[0..19,0..19] of byte;
warna : TColor;
t : String;
arrb: integer;
i, j, baris, kolom : integer;
indeks : integer;
s : string;
baris1 : array of real;
begin
hkotak := image3.height div 20;
wkotak := image3.width div 20;
for a:=0 to 19 do
begin
for b:=0 to 19 do
begin
M[a][b] := 1;
end;
end;
for a:= 0 to 19 do
begin
for b:= 0 to 19 do
begin
for x:= (awkotak) to ((a wkotak)+(wkotak)-1) do
begin
for y:= (bhkotak) to ((b hkotak)+(hkotak)-1) do
begin
if(y > image3.Height-1) then
begin
break;
end;
warna := Image2.Canvas.Pixels[x,y];
rata := GetRValue(warna);
if rata = 255 then
begin
M[a][b] := 0;
end;
end;
if(x > image3.width-1) then
begin
break;
end;
end;
end;
end;
for a:= 0 to 19 do
begin
for b:= 0 to 19 do
begin
for x:= (awkotak) to ((a wkotak)+(wkotak)-1) do
begin
for y:= (bhkotak) to ((b hkotak)+(hkotak)-1) do
begin
if(y > image4.Height-1) then
begin
break;
end;
if M[a][b] = 1 then
begin
Image4.Canvas.Pixels[x,y] := RGB(0,0,0);
end
else
begin
// warna := 255;
Image4.Canvas.Pixels[x,y] := RGB(255,255,255);
end;
end;
if(x > image4.width-1) then
begin
break;
end;
end;
Image4.Repaint;
Image4.Refresh;
end;
end;
Image4.Canvas.Pen.Color := clRed;
for a:=0 to 19 do
begin
Image4.Canvas.MoveTo(0,ahkotak);
Image4.Canvas.LineTo(Image4.Width-1,a hkotak);
Image4.Canvas.MoveTo(awkotak,0);
Image4.Canvas.LineTo(a wkotak,Image4.Height-1);
end;
for a:=0 to 19 do
begin
for b:=0 to 19 do
begin
// M[a][b] := 1;
t := t + IntToStr(M[b][a]) + ' ';
end;
memo1.Lines.Append(t);
t := '';
end;
[/code:1:be36ad12e0]

more 13 years ago
theodorusap
Pada ini :
procedure TUser.Button3Click(Sender: TObject);
.......
di bagian ini :
warna := Image2.Canvas.Pixels[x,y]; <-- ini kenapa make Image2?
rata := GetRValue(warna);
if rata = 255 then
begin
M[a]2 := 0; //ngesetnya 0 saja?
end;
coba diubah menjadi :
warna := Image3.Canvas.Pixels[x,y]; //<diganti ke Image3
rata := GetRValue(warna);
if rata = 255 then
begin
M[a]2 := 0;
end
else M[a]2 := 1; //<-tambah baris ini.
Mudah2an jalan :)

more 13 years ago
diandewi
udah mau jalan gan...makasi
tp gimana ya supaya matriksnya berukuran 46 x 56 jg?

more 13 years ago
theodorusap
procedure TUser.Button3Click(Sender: TObject);
var
a,b,x,y,hkotak,wkotak,rata : Integer;
M : array of byte; <-- ini artinya matriknya berukuran 19x19.
cara sederhana diubah saja menjadi :
M : array of byte; <<--45 baris, 56 kolom
atau
M : array of byte; <<--56 baris, 45 kolom
terus bagian ini :
for a:=0 to 19 do
begin
for b:=0 to 19 do
diubah sesuai panjang dan lebar gambar.
Kalo g salah dalam procedure TUser.Button3Click(Sender: TObject);
looping di atas ada 3 kali muncul. diubah semuanya.

more 13 years ago
diandewi
saya udah cb sebelumnya, tp matriksnya kok jd hancur ya.. angkanya brantakan
ini codenya, saya bingung salahnya dimana
[code:1:76a7a7aa40] procedure TUser.Button3Click(Sender: TObject);
var
a,b,x,y,hkotak,wkotak,rata : Integer;
M : array[0..45,0..55] of byte;
warna : TColor;
t : String;
arrb: integer;
i, j, baris, kolom : integer;
indeks : integer;
s : string;
baris1 : array of real;
begin
hkotak := image3.height div 55;
wkotak := image3.width div 45;
for a:=0 to 45 do
begin
for b:=0 to 55 do
begin
M[a][b] := 1;
end;
end;
for a:= 0 to 45 do
begin
for b:= 0 to 55 do
begin
for x:= (awkotak) to ((a wkotak)+(wkotak)-1) do
begin
for y:= (bhkotak) to ((b hkotak)+(hkotak)-1) do
begin
if(y > image3.Height-1) then
begin
break;
end;
warna := Image3.Canvas.Pixels[x,y];
rata := GetRValue(warna);
if rata = 255 then
begin
M[a][b] := 0;
end;
if rata <> 255 then
begin
M[a][b] := 1;
end;
end;
if(x > image3.width-1) then
begin
break;
end;
end;
end;
end;
for a:= 0 to 45 do
begin
for b:= 0 to 55 do
begin
for x:= (awkotak) to ((a wkotak)+(wkotak)-1) do
begin
for y:= (bhkotak) to ((b hkotak)+(hkotak)-1) do
begin
if(y > image4.Height-1) then
begin
break;
end;
if M[a][b] = 1 then
begin
Image4.Canvas.Pixels[x,y] := RGB(0,0,0);
end
else
begin
// warna := 255;
Image4.Canvas.Pixels[x,y] := RGB(255,255,255);
end;
end;
if(x > image4.width-1) then
begin
break;
end;
end;
Image4.Repaint;
Image4.Refresh;
end;
end;
Image4.Canvas.Pen.Color := clRed;
for a:=0 to 45 do
begin
Image4.Canvas.MoveTo(0,ahkotak);
Image4.Canvas.LineTo(Image4.Width-1,a hkotak);
Image4.Canvas.MoveTo(awkotak,0);
Image4.Canvas.LineTo(a wkotak,Image4.Height-1);
end;
for a:=0 to 45 do
begin
for b:=0 to 55 do
begin
// M[a][b] := 1;
t := t + IntToStr(M[b][a]) + ' ';
end;
memo1.Lines.Append(t);
t := '';
end;[/code:1:76a7a7aa40]

more 13 years ago
theodorusap
Codenya rumit bgt... membingungkan gan...
coba isinya
Procedure TUser.Button3Click(Sender: TObject);
dibuat begini :
Procedure TUser.Button3Click(Sender: TObject);
var
a,b,x,y,hkotak,wkotak,rata : Integer;
M : array[0..45,0..55] of byte;
warna : TColor;
t : String;
dx,dy:Integer;
R:Trect;
begin
dx:=45;
dy:=55;
hkotak := image4.height div dy;
wkotak := image4.width div dx;
//Kosongkan isi matrik
fillchar(M,SizeOf(M),0);
for a:= 0 to dx do
for b:= 0 to dy do
begin
warna := Image3.Canvas.Pixels[a,b];
rata := GetRValue(warna);
if rata = 255 then
M[a][b] := 0
else
M[a][b] := 1;
end;
Image4.Canvas.Brush.Color:=clWhite;
Image4.Canvas.FillRect(Rect(0,0,Image4.Width-1,Image4.Height-1));
for a:= 0 to dx do
begin
for b:= 0 to dy do
if M[a][b] = 1 then
begin
Image4.Canvas.Brush.Color:=clBlack;
Image4.Canvas.Pen.Color:=clRed;
R:=Rect(awkotak,b hkotak,(a+1)wkotak,(b+1) hkotak);
Image4.Canvas.FillRect(R);
Image4.Repaint;
end;
end;
Image4.Canvas.Pen.Color := clRed;
for a:=0 to dx do
begin
Image4.Canvas.MoveTo(awkotak,0);
Image4.Canvas.LineTo(a wkotak,Image4.Height-1);
end;
for b:=0 to dy do begin
Image4.Canvas.MoveTo(0,bhkotak);
Image4.Canvas.LineTo(Image4.Width-1,b hkotak);
end;
memo1.Clear;
for a:=0 to 45 do begin
for b:=0 to 55 do
begin
t := t + IntToStr(M[a][b]) + ' ';
end;
memo1.Lines.Append(t);
t := '';
end;
end;

more 13 years ago
diandewi
tetep gak mau gan....
kok aneh ya...padahal codenya sama, cuma ganti ukuran array aja tp kok gak mau..apa mungkin karena ukuran baris ama kolomnya beda ya?

more 13 years ago
diandewi
tetep gak mau gan....
kok aneh ya...padahal codenya sama, cuma ganti ukuran array aja tp kok gak mau..apa mungkin karena ukuran baris ama kolomnya beda ya?

more 13 years ago
diandewi
ni codenya yang lebih sederhana ngubah biner ke matriks aja, sama hasilnya tp mtriksnya kebalik, ga sesuai dengan gambar binernya
" onerror="this.style.display='none'"/>
for b:=0 to 45 do
begin
for a:=0 to 55 do
begin
t := t + IntToStr(M[b][a]) + ' ';
end;
memo1.Lines.Append(t);
t := '';
end;
more ...
- Pages:
- 1
- 2
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- satu masalah selesai, muncul masalah fast report yang lain
by radhutz in Reporting more 15 years ago - Aplikasi instaler
by yufan in Multimedia & Graphic Enhancement more 13 years ago - DBGrid Help ??
by amakita in Hal umum tentang Pascal Indonesia more 17 years ago - filter record di interbase
by donlego in FireBird more 17 years ago - koneksi dan record firebird to delphi?
by banja in FireBird more 15 years ago - MyIsam VS InnoDB
by reza_onclick in MySQL more 17 years ago - buat button di dalam kolom grid??????
by fat_279 in Tutorial & Community Project more 16 years ago - hoi.. mau saran nih..
by AIIA in OOT more 16 years ago - Always Maximize
by 3m8ooo in Hal umum tentang Pascal Indonesia more 16 years ago - Gimana cara menangkap message onScroll pada suatu komponen
by ardie_b in Tip n Trik Pemrograman more 17 years ago