Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Pixel gleicher Farbe zählen (https://www.delphipraxis.net/116050-pixel-gleicher-farbe-zaehlen.html)

littleDave 22. Jun 2008 20:16

Re: Pixel gleicher Farbe zählen
 
Das wird es wahrscheinlich sein @dominikkv, dein Bitmap hat keine 24/32 Bit.

bmp.PixelFormat := pf32Bit; :arrow: array[0..3] of byte
bmp.PixelFormat := pf24Bit; :arrow: array[0..2] of byte

Mit weniger Bits solltest du nicht rumhantieren, da du sonst die Werte erst "mühsam" in RGB-Werte umrechnen musst. Also schau mal, dass du bei dir
Delphi-Quellcode:
bmp.PixelFormat := pf24Bit;
aufrufst

dominikkv 22. Jun 2008 20:35

Re: Pixel gleicher Farbe zählen
 
Wenn ich das ganze mit pf32Bit mache geht das wirklich ein ganzes Stück schneller!
Und wenn ich bei deiner Function, Neutral General, Result zunächst mit 0 initialisiere kommt auch wirklich das richtige Ergebnis raus 8)

Vielen Dank euch beiden für eure Hilfe :cheers:

2 Fragen habe ich aber noch:
- Wird das ganze mit pf24Bit nochmal schneller?
- Wenn ja, wie komme ich dann zu meinem Farbwert, ich hab ja dann nur 2 Werte in dem Array, für RGB brauche ich aber 3

Neutral General 22. Jun 2008 20:37

Re: Pixel gleicher Farbe zählen
 
Hi,

1. Die 32-Bit Methode ist die schnellste.
2. [0..2] = 3 Einträge (24 Bit), [0..3] = 4 Einträge (32 Bit)

PS: Also bei mir ist das Array schon standardmäßig "genullt"... :gruebel:

Aber wenn du es schon nullen willst dann hätte ich da was für dich:

Delphi-Quellcode:
FillChar(Result[0],Length(Result)*SizeOf(Integer),0);

dominikkv 22. Jun 2008 20:55

Re: Pixel gleicher Farbe zählen
 
Zitat:

Zitat von Neutral General
1. Die 32-Bit Methode ist die schnellste.

Ok, dann werde ich die verwenden.
Zitat:

Zitat von Neutral General
2. [0..2] = 3 Einträge (24 Bit), [0..3] = 4 Einträge (32 Bit)

oh... das fängt bei 0 an... hab ich nicht gesehen :oops:
Darum ist bei mir bei den ersten Versuchen wahrscheinlich immer ein falsches Ergebnis rausgekommen -.-
Zitat:

Zitat von Neutral General
PS: Also bei mir ist das Array schon standardmäßig "genullt"... :gruebel:

Aber wenn du es schon nullen willst dann hätte ich da was für dich:

Delphi-Quellcode:
FillChar(Result[0],Length(Result)*SizeOf(Integer),0);

Bei mir kam da immer ein anderes Ergebnis raus, nachdem ich das dann initialisiert habe wurds richtig...egal^^
Werde jetzt auf jedenfall FillChar verwenden, Danke :stupid:

Nochmal Danke an euch beide

:dp: :love:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz