Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ocitavanje pozadine slike

[es] :: Pascal / Delphi / Kylix :: ocitavanje pozadine slike

[ Pregleda: 4459 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Pajke
Pajovic Nenad
Vatrogasac
Sabac

Član broj: 2888
Poruke: 41
*.verat.net

Sajt: www.ptt.yu/korisnici/p/a/..


Profil

icon ocitavanje pozadine slike30.10.2003. u 09:57 - pre 249 meseci
naslov mozda nije najbolji ali zanima me kako da ( u DELPHI -ji) sa neke slike recimo crno bele ocitavam koji su pixeli ukluceni a koji ne ili jos bolje ako moze da se odredi koja je nijansa sive. Trazio sam po HELP-u ali nista nisam nasao.
dali ima neka komponenta za to ili postoji komanda koja to ocitava...
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.222.EUnet.yu



+1 Profil

icon Re: ocitavanje pozadine slike30.10.2003. u 23:06 - pre 249 meseci
stavis na formu komponentu TImage (sa palete Additional) i ucitas joj sliku (za pocetak neku BMP sliku u sivim nijansama grayscale) preko Picture property-a.
Stavis dugme na formu i na OnClick stavis sledece:

Code:

procedure TForm1.BitBtn1Click(Sender: TObject);
Var Color : TColor;
    r, g, b : byte;
begin
     With Image1.Picture.Bitmap.Canvas do begin
     Color := Pixels[1,1]; // Pristupas pixelu na slici
                           // koji se nalazi na 1,1
                           // poziciji.

     // Boju pixela razlazes na r, g i b komponente
     r := GetRValue(Color);
     g := GetGValue(Color);
     b := GetBValue(Color);
     // Sada radi sa komponentama sta zelis
     // Kod slike u nijansama sive (grayscale)
     // r, g i b imaju iste vrednosti i to
     // tako da je vrednost nula - puna crna, a
     // vrednost 255 - puna bela boja, a sve izmedju
     // predstavlja nijanse
     end;
end;


Ako zelis da prolazis kroz sve pixele slike moras to da uradis tako sto ces napraviti
petlju. U svakom slucaju za brz prolazak kroz sliku mora se napraviti drugaciji
pristup, ali hajde prvo probaj ovo.
 
Odgovor na temu

Pajke
Pajovic Nenad
Vatrogasac
Sabac

Član broj: 2888
Poruke: 41
*.verat.net

Sajt: www.ptt.yu/korisnici/p/a/..


Profil

icon Re: ocitavanje pozadine slike02.11.2003. u 08:44 - pre 249 meseci
Probao sam i radi, evo dole je prikacen kod koji sam na brzinu sklep`o on ocitava
100*100 pixela (za 10-ak sec.kod mene) i upisuje vrednosti u memo komponentu.
E sad meni bi ustvari trebalo da napravim program koji ce pratiti svetle ili tamne povrsine na slici (nesto kao ploter) a pixele koje je obradio trebalo bi da promene boju (neka boja bi oznacavala da je taj pixel obradjen)
-Sto se tice pracenja tu imam neke ideje ...
-zanima me moze li se menjati boja pixelima na slici (TImage)
Prikačeni fajlovi
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.53.EUnet.yu



+1 Profil

icon Re: ocitavanje pozadine slike02.11.2003. u 12:29 - pre 249 meseci
Probaj sledecu varijantu:

Code:

// Dodaj u zaglavlju...
type
  PRGBArray = ^TRGBArray;
  TRGBArray = Array[0..2500] of TRGBTriple;
....

procedure TForm1.Button1Click(Sender: TObject);
Var Color : TColor;
    r, g, b : byte;
    n,i:integer;
begin
Var
  Y, X : integer;
  SL: PRGBArray;
begin
  Memo1.Lines.BeginUpdate;
  for Y := 0 to Image1.Picture.Bitmap.Height - 1 do
   begin
    SL := Image1.Picture.Bitmap.ScanLine[Y];
    for X := 0 to Image1.Picture.Bitmap.Width - 1 do
     begin
       Memo1.lines.add(Format('R=%d  G=%d  B=%d', [SL[X].rgbtRed,SL[X].rgbtGreen,SL[X].rgbtBlue] )
     end;
   end; 
   Memo1.Lines.EndUpdate;
end;
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.53.EUnet.yu



+1 Profil

icon Re: ocitavanje pozadine slike02.11.2003. u 12:36 - pre 249 meseci
Mozes da menjas pixele:

samo stavis

SL[X].rgbtRed := xxx;
SL[X].rgbtGreen := xxx;
SL[X].rgbtBlue := xxx;
 
Odgovor na temu

Pajke
Pajovic Nenad
Vatrogasac
Sabac

Član broj: 2888
Poruke: 41
*.verat.net

Sajt: www.ptt.yu/korisnici/p/a/..


Profil

icon Re: ocitavanje pozadine slike03.11.2003. u 13:16 - pre 249 meseci
Ova druga varijanta bi mi manje odgovarala jer cu ja pixele skenirati u raznim pravcima aovaj kod sliku skenira liniju po linij ako se ne varam jer nisam nikako mogao da ga nateram da proradi stalno mi prijavljuje razne greske u vezi

type
PRGBArray = ^TRGBArray;
TRGBArray = Array[0..2500] of TRGBTriple;

A kad uradim kako trazi onda prijavi drugu itd...
(trazi da stavim ' : ' pa kad ih stavim onda mu smeta '=' ,pa posle mu smeta ^ ,pa onda nezna sta je Array...)
posto ovo nije moglo onda ni ostatak koda nisam mogao probati.
(koristim Delphi 5 i 7 ako ima neke veze)

U principu odgovara mi onaj prvi kod ( uz male izmene) samo kako da menjam pixele
ako koristim prvu verziju znaci direkrno :npr. pixel x,y.Color:= neka boja... Moze li tako nesto ,Brzina mi nije mnogo bitna.
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.203.EUnet.yu



+1 Profil

icon Re: ocitavanje pozadine slike03.11.2003. u 22:12 - pre 249 meseci
stavi "Windows" u USES, jer se tu nalazi definicija

Code:

  PRGBTriple = ^TRGBTriple;
  {$EXTERNALSYM tagRGBTRIPLE}
  tagRGBTRIPLE = packed record
    rgbtBlue: Byte;
    rgbtGreen: Byte;
    rgbtRed: Byte;
  end;
  TRGBTriple = tagRGBTRIPLE;
  {$EXTERNALSYM RGBTRIPLE}
  RGBTRIPLE = tagRGBTRIPLE;


kada ovo ubacis (Windows u USES) sve bi trebalo da radi kako treba. Ovo je mnogo brze od onog prvog pristupa, ali ako ti brzina nije bitna onda koristi prvu varijantu.

 
Odgovor na temu

Pajke
Pajovic Nenad
Vatrogasac
Sabac

Član broj: 2888
Poruke: 41
*.verat.net

Sajt: www.ptt.yu/korisnici/p/a/..


Profil

icon Re: ocitavanje pozadine slike04.11.2003. u 20:25 - pre 249 meseci
Hvala na odgovorima
Bili su korisni
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: ocitavanje pozadine slike

[ Pregleda: 4459 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.