Arsip: tanya biner to matriks

 
user image
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]
user image
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 :)
user image
more 13 years ago

diandewi

udah mau jalan gan...makasi tp gimana ya supaya matriksnya berukuran 46 x 56 jg?
user image
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.
user image
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]
user image
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;
user image
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?
user image
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?
user image
more 13 years ago

theodorusap

coba include code kamu, trus pasti isi matrik di memo biar kuliat.
user image
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
   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;
" onerror="this.style.display='none'"/>
more ...
  • Pages:
  • 1
  • 2
Share to

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

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com